概念

LinkedList是一个C#为我们封装好的类

它的本质是一个可变类型的泛型双向链表

声明

需要引用命名空间

using System.Collections.Generic

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

链表对象 需要掌握两个类

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

增删查改

在链表尾部添加元素

linkedList.AddLast(10);

在链表头部添加元素

linkedList.AddFirst(20);

在某一个节点之后添加一个节点

要指定节点 先得得到一个节点

LinkedListNode<int> n = linkedList.Find(20);
linkedList.AddAfter(n, 15);

在某一个节点之前添加一个节点

要指定节点 先得得到一个节点

linkedList.AddBefore(n, 11);

移除头节点

linkedList.RemoveFirst();

移除尾节点

linkedList.RemoveLast();

移除指定节点

无法通过位置直接移除

linkedList.Remove(20);

清空

linkedList.Clear();

头尾节点

LinkedListNode<int> first = linkedList.First;
LinkedListNode<int> last = linkedList.Last;

找到指定值的节点

无法直接通过下标获取中间元素
只有遍历查找指定位置元素

LinkedListNode<int> node = linkedList.Find(3);
Console.WriteLine(node.Value);
node = linkedList.Find(5);

判断是否存在

if( linkedList.Contains(1) )
{
    Console.WriteLine("链表中存在1");
}

要先得再改 得到节点 再改变其中的值

 Console.WriteLine(linkedList.First.Value);
 linkedList.First.Value = 10;
 Console.WriteLine(linkedList.First.Value);

遍历

foreach遍历

foreach (int item in linkedList)
{
    Console.WriteLine(item);
}

通过节点遍历 从头到尾

 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;
}

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐