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

C# LinkedList

 LinkedList

LinkedList是一个C#为我们封装好的类
它的本质是一个可变类型的泛型双向链表

申明

需要引用命名空间           using System.Collections.Generic


            LinkedList<int> linkedList = new LinkedList<int>();
            LinkedList<string> linkedList2 = new LinkedList<string>();
           

链表对象 需要掌握两个类

一个是链表本身 一个是链表节点类LinkedListNode

增删查改


            1.在链表尾部添加元素
            linkedList.AddLast(10);

            2.在链表头部添加元素
            linkedList.AddFirst(20);

            3.在某一个节点之后添加一个节点
              要指定节点 先得得到一个节点
            LinkedListNode<int> n = linkedList.Find(20);//通过值返回一个节点
            linkedList.AddAfter(n, 15);  //节点的后面加一个值为15的节点


            4.在某一个节点之前添加一个节点
              要指定节点 先得得到一个节点
            linkedList.AddBefore(n, 11);
 


            1.移除头节点
            linkedList.RemoveFirst();
            2.移除尾节点
            linkedList.RemoveLast();
            3.移除指定节点
            无法通过位置直接移除 通过存储的值来查找并移除  没有下标的概念
            linkedList.Remove(20);
            4.清空
            linkedList.Clear();

          

 查
            1.头节点
            LinkedListNode<int> first = linkedList.First;


            2.尾节点
            LinkedListNode<int> last = linkedList.Last;


            3.找到指定值的节点
              无法直接通过下标获取中间元素
              只有遍历查找指定位置元素

            LinkedListNode<int> node = linkedList.Find(3);
            Console.WriteLine(node.Value); // 这里控制台打印3


            node = linkedList.Find(5);


            4.判断是否存在
            if( linkedList.Contains(1) )
            {
                Console.WriteLine("链表中存在1");
            }
            


            要先得再改 得到节点 再改变其中的值
            linkedList.First.Value = 10;

遍历


            1.foreach遍历  直接得到值
            foreach (int item in linkedList)
            {
                Console.WriteLine(item);
            }

            2.通过节点遍历


              从头到尾
            LinkedListNode<int> nowNode = linkedList.First;
            while (nowNode != null)
            {
                Console.WriteLine(nowNode.Value);
                nowNode = nowNode.Next;
            }

            从尾到头
            nowNode = linkedList.Last;
            while (nowNode != null)
            {
                Console.WriteLine(nowNode.Value);
                nowNode = nowNode.Previous;
            }


using System.Collections;
using System.Linq;class Program
{public static void Main(){LinkedList<int> list = new LinkedList<int>();Random rand = new Random();for (int i = 0; i < 10; i++){list.AddLast(rand.Next(0,101));}LinkedListNode<int> node = list.First;while (node != null){Console.WriteLine(node.Value);node = node.Next;}Console.WriteLine("-----------------------------");node = list.Last ;while (node != null){Console.WriteLine(node.Value);node = node.Previous;}}
}

相关文章:

  • 全光谱日光模拟HUD阳光倒灌实验温升测试
  • vue 组件通信的解决方案
  • react面试题四
  • 【Java】了解线程 Thread 类的使用,如何创建、终止、等待一个线程以及获取线程的状态
  • 【Qt】常见控件 —— QWidget(上)
  • 甲醛最怕三个克星 新家去除甲醛最快最有效的方法
  • Redis内存淘汰
  • Android 息屏录音
  • yolact导出onnx
  • 如何通过数据管理优化储能系统的运行效率?
  • Android Studio SQLite Manage
  • Java集合框架--LIST,ArrayList,LinkedList
  • 笔记-系统规划与管理师-案例题-2022年-IT服务部署实施
  • 第三十一章:docker如何部署Nexus
  • 搭建Windows环境下的Redis服务与TinyRDM客户端
  • CentOS7 安装JDK
  • JAVA之继承和多态
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PAT A1050
  • Python语法速览与机器学习开发环境搭建
  • vue:响应原理
  • yii2中session跨域名的问题
  • 爱情 北京女病人
  • 大主子表关联的性能优化方法
  • 浮动相关
  • 给初学者:JavaScript 中数组操作注意点
  • 前端面试总结(at, md)
  • 设计模式走一遍---观察者模式
  • 数据科学 第 3 章 11 字符串处理
  • 网络应用优化——时延与带宽
  • 一些关于Rust在2019年的思考
  • HanLP分词命名实体提取详解
  • Spring Batch JSON 支持
  • ​插件化DPI在商用WIFI中的价值
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # C++之functional库用法整理
  • #pragma once
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)React组件、useState、组件样式
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)iOS字体
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .equals()到底是什么意思?
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 给NuGet包添加Readme
  • .Net 执行Linux下多行shell命令方法
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • @EventListener注解使用说明