当前位置: 首页 > 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;尽管编译器不强制要求你修复…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...