LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
Unity-C#:链表(双向链表)LinkedList<>
Zeiod 2022-04-20

链表(双向链表)LinkedList<>

因为C#自带的链表有前驱和后驱,所以是双向链表。同时也是泛型。

链表的赋值与数组集合(比如List<>)是不一样的,数组是一片连续的存储空间,链表在内存中是离散的,在空间中并不连续,通过两个指针,一个指针指向上一个存储位置地址,一个指针指向下一个存储位置地址,将数据通过这种关联方式组织在一起。

链表插入、删除时效率高于数组:数组每在中间存一个值,后面的值都得向后挪移。链表因为存储位置的离散则不用,添加或删除仅仅改变指针的指向。

链表在查找时效率低于数组:链表只能通过Previous前驱、Next后驱去找到值,不能像数组通过索引直接拿到。链表只能遍历,所以时间复杂度O(n),数组为O(1)

1.双向列表类型变量的声明与引用新双向链表对象

2.添加头部值、尾部值的方法

AddFirst()添加头部值,即在链表的首部添加一个值,也同时会产生一个节点即位置,而这个方法会返回这个节点类型值,通过这个节点值就可以在其后或前添加新值。

AddLast()添加尾部值,即在链表的尾部添加一个值,也同时会产生一个节点即位置,而这个方法会返回这个节点类型值,通过这个节点值就可以在其后或前添加新值。

3.在节点前、节点后添加值

AddBefore()在节点前添加值

AddAfter()在节点后添加值

4.打印链表的长度、第一个值、最后一个值

l1.Count长度

l1.First.Value第一个值

l1.Last.Value最后一个值

5.打印前驱、后驱结点的值

node.Previous.Value前驱结点的值。需要注意的是首节点没有前驱,如果应用会报错。

node.Next.Value前驱结点的值。需要注意的是尾节点没有后驱,如果应用会报错。



推荐文章
评论(0)
分享到
转载我的主页