当前位置: 首页 > news >正文

4-7-1.C# 数据容器 - LinkedList(LinkedList 的定义、LinkedList 结点的遍历、LinkedList 的常用方法)

LinkedList 概述

  1. LinkedList<T> 通过节点(Node)来存储数据,每个节点包含数据和指向下一个节点的引用

  2. LinkedList<T> 存储的元素是可重复的

  3. LinkedList<T> 支持泛型,可以指定存储的元素的类型

  4. LinkedList<T> 不支持索引,因为它通过节点(Node)来存储数据

  5. LinkedList<T> 不是线程安全的,在多线程环境中需要谨慎使用


一、LinkedList 的定义

  1. 定义 LinkedList
LinkedList<int> nums = new LinkedList<int>();
  1. 定义 LinkedList 并填充一些元素
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });

二、LinkedList 结点的遍历

1、使用 foreach 循环遍历
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果1
2
3
4
5
2、使用 First 属性与 Next 属性遍历
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });LinkedListNode<int> currentNode = nums.First;
while (currentNode != null)
{Console.WriteLine(currentNode.Value);currentNode = currentNode.Next;
}
# 输出结果1
2
3
4
5

三、LinkedList 的常用方法

1、LinkedList 结点的添加(对于 LinkedList)
  1. 从 LinkedList 头部添加
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果1
2
3
  1. 从 LinkedList 尾部添加
LinkedList<int> nums = new LinkedList<int>();nums.AddFirst(1);
nums.AddFirst(2);
nums.AddFirst(3);foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果3
2
1
  1. 从 LinkedList 头部和尾部添加
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);nums.AddFirst(1);
nums.AddFirst(2);
nums.AddFirst(3);foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果3
2
1
1
2
3
2、LinkedList 结点的添加(对于结点)
  1. 在某个结点之后添加
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);LinkedListNode<int> secondNode = nums.First.Next;
nums.AddAfter(secondNode, 10);foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果1
2
10
3
  1. 在某个结点之前添加
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);LinkedListNode<int> secondNode = nums.First.Next;
nums.AddBefore(secondNode, 10);foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果1
10
2
3

3、LinkedList 结点的删除
  1. 删除指定数据的结点
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);Console.WriteLine("删除结点之前");
foreach (int value in nums)
{Console.WriteLine(value);
}nums.Remove(2);Console.WriteLine("删除结点之后");
foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果删除元素之前
1
2
3
删除元素之后
1
3
  1. 删除第一个结点
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);Console.WriteLine("删除结点之前");
foreach (int value in nums)
{Console.WriteLine(value);
}nums.RemoveFirst();Console.WriteLine("删除结点之后");
foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果删除元素之前
1
2
3
删除元素之后
2
3
  1. 删除最后一个结点
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);Console.WriteLine("删除结点之前");
foreach (int value in nums)
{Console.WriteLine(value);
}nums.RemoveLast();Console.WriteLine("删除结点之后");
foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果删除结点之前
1
2
3
删除结点之后
1
2
4、LinkedList 结点的清空
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);Console.WriteLine("清空结点之前");
foreach (int value in nums)
{Console.WriteLine(value);
}nums.Clear();Console.WriteLine("清空结点之后");
foreach (int value in nums)
{Console.WriteLine(value);
}
# 输出结果清空结点之前
1
2
3
清空结点之后
5、LinkedList 结点的查找
LinkedList<int> nums = new LinkedList<int>();nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);LinkedListNode<int> node = nums.Find(2);Console.WriteLine(node.Value);
# 输出结果2

相关文章:

4-7-1.C# 数据容器 - LinkedList(LinkedList 的定义、LinkedList 结点的遍历、LinkedList 的常用方法)

LinkedList 概述 LinkedList<T> 通过节点&#xff08;Node&#xff09;来存储数据&#xff0c;每个节点包含数据和指向下一个节点的引用 LinkedList<T> 存储的元素是可重复的 LinkedList<T> 支持泛型&#xff0c;可以指定存储的元素的类型 LinkedList<…...

「三」体验HarmonyOS端云一体化开发模板——使用DevEco Studio直接创建端云一体化工程

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…...

确保以管理员权限运行 Visual Studio 开发者命令提示符

文章目录 解决方法&#xff1a;1. 以管理员身份运行命令提示符2. 改变目录权限3. 改变项目目录位置4. 检查文件系统权限 总结&#xff1a; ********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.12.0 …...

命令执行简单(棱角社区有毒)

前言&#xff1a;小迪安全2022第一节反弹shell&#xff0c;小迪用的是两台都是云服务器&#xff0c;没有服务器可以在自己的主机上搭建也是可以的&#xff0c;主机上搭两个网站 思路&#xff1a;生成一个木马文件&#xff0c;下载到本机&#xff0c;然后利用本机上传到目标主机…...

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境&#xff1a; keil版本为5.38&#xff0c;版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址&#xff1a;https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译&#xff0c;会报很多错&#xff0c;先不管。 二、更改头文件依赖 观察…...

Kafka-创建topic源码

一、命令创建topic kafka-topics --create --topic quickstart-events --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2 二、kafka-topics脚本 exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.TopicCommand "$" 脚本中指定了…...

【网络安全】(一) 0成本添加访问级监控

互联网的安全感这个概念源于阿里。顾名思义&#xff0c;让互联网的用户对于web产品能够产生足够的信任和依赖。特别是涉及到用户资金交易的站点&#xff0c;一次严重的用户资料泄露就可以彻底毁掉你的品牌。 然而当前阶段除了bat大部分互联网行业的企业对于网络安全给的重视都…...

【Three.js基础学习】26. Animated galaxy

前言 shaders实现星系 课程回顾 使用顶点着色器为每个粒子设置动画 a属性 &#xff0c; u制服 &#xff0c;v变化 像素比&#xff1a;window.devicePixelRatio 自动从渲染器检索像素比 renderer.getPixelRatio() 如何尺寸衰减&#xff0c; 放大缩小视角时&#xff0c;粒子都是同…...

vscode使用ssh配置docker容器环境

1 创建容器&#xff0c;并映射主机和容器的指定ssh服务端口 2 进入容器 docker exec -it <容器ID> /bin/bash 3在容器中安装ssh服务 apt-get update apt-get install openssh-server 接着修改ssh文件信息,将容器的10008端口暴露出来允许root用户使用ssh登录 vim /…...

NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息&#xff1a; 简介: 本文讨论的背景是大型语言模型&#xff08;LLMs&#xff09;的自我对齐问题。传统的LLMs对齐方法依赖于昂贵的训练和人类偏好注释&am…...

【LeetCode】167. 两数之和 II - 输入有序数组

描述 给定一个下标从 1 开始的整数数组numbers&#xff0c;该数组已按非递减顺序排列&#xff0c;请从数组中找出满足相加之和等于目标数target的两个数。如果这两个数分别是numbers[index1]和numbers[index2]&#xff0c;返回整数数组[index1, index2]。 只存在唯一答案&#…...

Getx:GetxController依赖管理02,Binding绑定全局控制器(懒加载Controller)

在使用GetX 状态管理器的时候&#xff0c;如果每个页面都手动实例化一个控制器就太麻烦了&#xff0c; Binding 的作用就是所有需要进行状态管理的控制器进行统一初始化 创建全局控制器Binding import package:get/get.dart; import ../controllers/counter.dart; // 同上一篇内…...

leetcode 找不同

389. 找不同 已解答 简单 相关标签 相关企业 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s "abcd"…...

2025 - 生信信息学 - GEO数据分析 - RF分析(随机森林)

GEO数据分析 - RF分析&#xff08;随机森林&#xff09; 01 准备数据文件 #install.packages("randomForest")#引用包 library(randomForest) set.seed(123456)inputFile"diffGeneExp.txt" #输入文件 setwd("/Users/wangyang/Desktop/BCBM/02ra…...

Matlab深度学习(四)——AlexNet卷积神经网络

网络搭建参考&#xff1a;手撕 CNN 经典网络之 AlexNet&#xff08;理论篇&#xff09;-CSDN博客 在实际工程应用中&#xff0c;构建并训练一个大规模的卷积神经网络是比较复杂的&#xff0c;需要大量的数据以及高性能的硬件。如果通过训练好的典型网络稍加改进&#xf…...

etcd defrag

场景 prometheus监控告警,告警信息如下 etcd cluster "kube-etcd": database size in use on instance xx is 33.45% of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.处理…...

golang语言整合jwt+gin框架实现token

1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…...

数据治理、数据素养和数据质量管理:文献综述

注意&#xff1a;这并不是正式发表的论文&#xff0c;只是一篇用来交作业的文章 摘要 随着数据时代的到来&#xff0c;数据治理、数据素养和数据质量管理成为组织数据管理中的三大核心概念。本文基于相关研究与实践&#xff0c;对这三个领域进行全面综述&#xff0c;探讨它…...

【Linux】用户和用户组管理

管理用户 1&#xff0e;添加用户账号——useradd命令 【实例2-1-1】 按系统默认配置添加指定用户账号st和stu。 # 添加用户账号st [rootlocalhost ~]# useradd st # 添加用户账号stu [rootlocalhost ~]# useradd stu【实例2-1-2】添加用户账号stu01&#xff0c;UID为1004&am…...

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要&#xff1a; 警告的定义&#xff1a;警告是编译器用来告诉你某些地方可能存在问题&#xff0c;尽管编译器不强制要求你修复…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...