C#泛型集合之——链表
链表基础
1.概述:C#中泛型集合中的链表—LinkedList 是一个双向链表,其结点为LinkedListNode 结构 其中,结点结构包含:Next,Previous,Value三部分。且结点中值可以重复。
链表的插删要快于Link Link实质上是顺序型,可以用foreach。而链表不行!
2.链表的创建及初始化:
(1) LinkedList<类型> 链表名 = new LinkedList<类型> ();
(2) LinkedList<类型> 链表名 = new LinkedList<类型> (数组名);
注意:LinkedList<类型> 链表名 = new LinkedList<类型> () {值} ; 这样是错误的,因为LinkedList中元素应该是结点LinkedListNode 而不能是单纯的值!
- 链表结点的创建及初始化:
LinkedListNode<类型> 结点名 = new LinkedListNode<类型> (值);
//初建结点必须赋值,类型为只读型,不能修改前后的指向。
4.链表的基本操作:
(1) 取链表的首位元素:链表名.First 链表名.Last //返回为结点型
(2) 链表结点的前后移动:结点.Next 结点.Previous //返回为结点型
(3) 统计链表的长度:链表名.Count(); //()圆括号有没有都行
链表名.(LongCount()) //必须有圆括号
(4) 添加结点:
链表名.AddFirst(); //圆括号中为值或者是结点,添加在链表头
链表名.AddLast(); //参数同上,添加在链表尾
链表名.AddBefore(参数一:添加位置,为结点类型,参数二:添加元素,值或者是结点类型);
链表名.AddAfter(参数一:添加位置,为结点类型,参数二:添加元素,值或者是结点类型);
(5) 删除结点:
链表名.Remove(); //括号中值为链表中值,若该值存在于多个结点中,则只删除第一个。括号中值也可以为结点类型,但是要注意这个结点必须是从原链表中获取的,否则运行会出错
链表名.RemoveFirst(); //删除首结点,首结点会自动后移
链表名.RemoveLast(); //删除尾结点,尾结点会自动前移
(6) 查找结点值:返回值为布尔类型
链表名.Contain(); 括号内为结点的值,不能是结点
(7) 查找结点:返回值为结点类型
链表名.Find(); 括号内为结点的值,不能是结点。若有多个结点的值相同,只返回第一个
链表名.FindLast(); 与Find 相同只是从后往前找
(8) 在链表中,要想判断两个结点是否为同一个结点不能用==号,要使用 结点.Equals(结点);
(9) 链表清空: 链表名.Clear();
C#泛型集合之——链表的更多相关文章
- C#非泛型集合和泛型集合的超级详解
C# 泛型集合之非泛型集合类与泛型集合类的对应: ArrayList对应List HashTable对应Dictionary Queue对应Queue Stack对应Stack SortedList对 ...
- .NET中的泛型集合总结
最近对集合相关的命名空间比较感兴趣,以前也就用下List<T>, Dictionary<Tkey, TValue>之类,总之,比较小白.点开N多博客,MSDN,StackOve ...
- C# DataSet装换为泛型集合
1.DataSet装换为泛型集合(注意T实体的属性其字段类型与dataset字段类型一一对应) #region DataSet装换为泛型集合 /// <summary> /// 利用反射和 ...
- Linq操作非泛型集合
我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable.但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable.那咋 ...
- c#利用泛型集合,为自己偷偷懒。
有人说"越懒"的程序员进步的越快!其实还挺有道理.亲身体验,从刚出来工作到现在,自己变"懒"了许多,但感觉写出来的代码确有了不少提升.刚开始啊,同样的代码,赋值 ...
- 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合
1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...
- GsonUtils.getGson().fromJson() 转泛型集合
List<QiTaFree> qiTaFreeList = GsonUtils.getGson().fromJson(exhiMain.getQiTaFressJson(), new Ty ...
- 快速入门系列--CLR--03泛型集合
.NET中的泛型集合 在这里主要介绍常见的泛型集合,很多时候其并发时的线程安全性常常令我们担忧.因而简述下.NET并发时线程安全特性,其详情请见MSDN. 普通集合都不支持多重并发写操作 部分支持单线 ...
- 类库,委托,as.is,var,泛型集合
类库: 就是让别人调用你写的方法,并且不让别人看到你是怎么实现的.(比如说一些核心文件) 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. ...
随机推荐
- 浅谈UDF并行
首先我们来看说明UDF并行流程的这个图 网格和求解数据分布和储存在计算节点(compute-node)处理器上,而对于GUI界面和主机(host)节点上不存储任何数据,主机节点将命令从GUI传递到0节 ...
- [原创]浅谈对任务分解法WBS应用
[原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...
- 颜色空间模型(HSV\LAB\RGB\CMYK)
通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用.本文部分章节整合了多位优秀博主的博客(链接见本 ...
- 《Go语言实战》读书笔记
<Go语言实战>中文版pdf 百度网盘: https://pan.baidu.com/s/1kr-gMzaPAn8BFZG0P24Oiw 提取码: r6rt 书籍源码:https://gi ...
- python初级(302) 6 对象(三)
一.复习 1.什么是魔法方法? 2.什么是类的初始化函数? 二.什么是self 使用一个类可以创建多个对象实例,例如: ball1 = Ball("red", "smal ...
- Operation之变换操作符
buffer buffer方法的作用是缓冲组合, 第一个参数是缓冲时间, 第二个参数是缓冲个数, 第三个参数是线程 该方法简单来说就是缓存Observable中发出的新元素, 当元素达到某个数量, 或 ...
- 21天学通 C++(第8版) 内涵目录
21天学通 C++(第8版) 第1章 绪论 1 1.1 C++简史 1 1.1.1 与C语言的关系 1 1.1.2 C++的优点 1 1.1.3 C++标准的发展历程 2 1.1.4 哪些人使用C++ ...
- 快速修改Windows系统密码命令
因现场需要,要对30多台虚拟机进行密码修改.正常修改方式为进入控制面板--用户账户--修改密码,输入原始密码.2遍新密码(一遍用于密码确认)完成密码修改. 这种方式操作较为繁琐,我们可以直接通过命令的 ...
- qsort与sort
快排是我们平常敲代码和比赛的时候 经常使用到的方法 qsort是函数库中自带的函数 这是一个标准的快排函数 而sort比qsort更是好用 sort对于不同大小的数组 会使用不 ...
- ReetrantLock架构源码 --- One
以下是绅士通过processon画的一个比较简单的架构,模板模式理清楚确实需要一点点时间 Doug Lea牛ban- .- 最近在复习整理知识点,这上面的一些关键方法addWaiter();acqui ...