首页 > 编程笔记 > C#笔记 阅读:11

C# LinkedList列表的用法(附带实例)

链表(LinkedList)表面上看是一串数据,但是列表内的数据可能散布在内存的各个地方。更明确地说,链表与数组最大的不同是,数组数据元素在内存的连续空间中,链表数据元素则散布在内存各个地方。

此外,链表与 List 最大差异是,链表可以从头部或是从尾部加入与删除元素。

C# LinkedList对象的创建

如果只是创建 LinkedList 对象,则可以使用下列语法:
LinkedList<T> 对象名称 = new LinkedList<T>();

如果要创建 LinkedList 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
LinkedList<T> 对象名称 = new LinkedList<T>(Int32);

如果要创建 List 对象,同时设置初始值,则可以使用下列语法:
List<T> 对象名称 = new List<T>(IEnumerable<T>);

【实例】创建元素是字符串的 LinkedList 对象,然后输出。
string[] str = new string[] { "one", "five", "ten" };
LinkedList<string> number = new LinkedList<string>(str);
foreach (var n in number)
    Console.Write($"{n} ");
执行结果为:

one five ten

C# LinkedList的属性

LinkedList 的常用属性如下:
【实例】认识 Count、First 和 Last 属性。
string[] books = { "C语言入门教程", "C++基础教程", "C#基础教程" };

LinkedList<string> mybooks = new LinkedList<string>(books);
Console.WriteLine($"LinkedList元素数量:{mybooks.Count}");
Console.WriteLine($"LinkedList第 1 个元素:{mybooks.First.Value}");
Console.WriteLine($"LinkedList最后元素:{mybooks.Last.Value}");
执行结果为:

LinkedList元素数量:3
LinkedList第 1 个元素:C语言入门教程
LinkedList最后元素:C#基础教程

C# LinkedList的方法

下表罗列了 LinkedList 的常用方法:

方法 描述
LinkedList<T>.AddFirst(LinkedListNode<T>) 在对象前端增加节点
LinkedList<T>.AddAfter(LinkedListNode<T>, LinkedListNode<T>) 在现有节点后增加节点
LinkedList<T>.AddBefore(LinkedListNode<T>, LinkedListNode<T>) 在现有节点前增加节点
LinkedList<T>.AddLast(LinkedListNode<T>) 在对象末端增加节点
LinkedList<T>.Contains(T) 回传节点元素是否存在
LinkedList<T>.Clear() 清除所有节点
LinkedList<T>.Remove(LinkedListNode<T>) 删除第一个相符的节点
LinkedList<T>.RemoveFirst() 删除最前端的节点
LinkedList<T>.RemoveLast() 删除最后面的节点

【实例】创建并输出链表,然后列出最前方节点与最后方节点的元素,接着将最后节点移到最前方,然后再输出链表。
LinkedList<string> List = new LinkedList<string>();
List.AddLast("red");
List.AddLast("green");
List.AddLast("blue");
Console.WriteLine("输出 LinkedList ");
foreach (string str in List)
    Console.Write(str + " ");
Console.WriteLine($"\nList最前方节点元素:{List.First.Value}");
Console.WriteLine($"List最后方节点元素:{List.Last.Value}");

// 最后节点移到最前面
LinkedListNode<string> mark = List.Last;    // 最后节点
List.RemoveLast();                         // 移除最后节点
List.AddFirst(mark);                       // 加到最前方
Console.WriteLine("最后节点移到最前面,重新输出 LinkedList");
foreach (string str in List)
    Console.Write(str + " ");
执行结果为:

输出 LinkedList
red green blue
List最前方节点元素:red
List最后方节点元素:blue
最后节点移到最前面,重新输出 LinkedList
blue red green 

相关文章