C# LinkedList列表的用法(附带实例)
链表(LinkedList)表面上看是一串数据,但是列表内的数据可能散布在内存的各个地方。更明确地说,链表与数组最大的不同是,数组数据元素在内存的连续空间中,链表数据元素则散布在内存各个地方。
此外,链表与 List 最大差异是,链表可以从头部或是从尾部加入与删除元素。
如果要创建 LinkedList 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
如果要创建 List 对象,同时设置初始值,则可以使用下列语法:
【实例】创建元素是字符串的 LinkedList 对象,然后输出。
【实例】认识 Count、First 和 Last 属性。
【实例】创建并输出链表,然后列出最前方节点与最后方节点的元素,接着将最后节点移到最前方,然后再输出链表。
此外,链表与 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:获得 LinkedList 对象的元素个数;
- First:LinkedList 对象的最前面节点,需加上 Value 属性才可以显示内容;
- Last:LinkedList 对象的最后面节点,需加上 Value 属性才可以显示内容。
【实例】认识 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