自学内容网 自学内容网

4-7-1.C# 数据容器 - LinkedList(LinkedList 的定义、LinkedList 结点的遍历、LinkedList 的常用方法)

LinkedList 概述

  1. LinkedList<T> 通过节点(Node)来存储数据,每个节点包含数据和指向下一个节点的引用

  2. LinkedList<T> 存储的元素是可重复的

  3. LinkedList<T> 支持泛型,可以指定存储的元素的类型

  4. LinkedList<T> 不支持索引,因为它通过节点(Node)来存储数据

  5. LinkedList<T> 不是线程安全的,在多线程环境中需要谨慎使用


一、LinkedList 的定义

  1. 定义 LinkedList
LinkedList<int> nums = new LinkedList<int>();
  1. 定义 LinkedList 并填充一些元素
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });

二、LinkedList 结点的遍历

1、使用 foreach 循环遍历
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

1
2
3
4
5
2、使用 First 属性与 Next 属性遍历
LinkedList<int> nums = new LinkedList<int>(new int[] { 1, 2, 3, 4, 5 });

LinkedListNode<int> currentNode = nums.First;
while (currentNode != null)
{
    Console.WriteLine(currentNode.Value);
    currentNode = currentNode.Next;
}
# 输出结果

1
2
3
4
5

三、LinkedList 的常用方法

1、LinkedList 结点的添加(对于 LinkedList)
  1. 从 LinkedList 头部添加
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

1
2
3
  1. 从 LinkedList 尾部添加
LinkedList<int> nums = new LinkedList<int>();

nums.AddFirst(1);
nums.AddFirst(2);
nums.AddFirst(3);

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

3
2
1
  1. 从 LinkedList 头部和尾部添加
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

nums.AddFirst(1);
nums.AddFirst(2);
nums.AddFirst(3);

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

3
2
1
1
2
3
2、LinkedList 结点的添加(对于结点)
  1. 在某个结点之后添加
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

LinkedListNode<int> secondNode = nums.First.Next;
nums.AddAfter(secondNode, 10);

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

1
2
10
3
  1. 在某个结点之前添加
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

LinkedListNode<int> secondNode = nums.First.Next;
nums.AddBefore(secondNode, 10);

foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

1
10
2
3

3、LinkedList 结点的删除
  1. 删除指定数据的结点
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

Console.WriteLine("删除结点之前");
foreach (int value in nums)
{
    Console.WriteLine(value);
}

nums.Remove(2);

Console.WriteLine("删除结点之后");
foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

删除元素之前
1
2
3
删除元素之后
1
3
  1. 删除第一个结点
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

Console.WriteLine("删除结点之前");
foreach (int value in nums)
{
    Console.WriteLine(value);
}

nums.RemoveFirst();

Console.WriteLine("删除结点之后");
foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

删除元素之前
1
2
3
删除元素之后
2
3
  1. 删除最后一个结点
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

Console.WriteLine("删除结点之前");
foreach (int value in nums)
{
    Console.WriteLine(value);
}

nums.RemoveLast();

Console.WriteLine("删除结点之后");
foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

删除结点之前
1
2
3
删除结点之后
1
2
4、LinkedList 结点的清空
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

Console.WriteLine("清空结点之前");
foreach (int value in nums)
{
    Console.WriteLine(value);
}

nums.Clear();

Console.WriteLine("清空结点之后");
foreach (int value in nums)
{
    Console.WriteLine(value);
}
# 输出结果

清空结点之前
1
2
3
清空结点之后
5、LinkedList 结点的查找
LinkedList<int> nums = new LinkedList<int>();

nums.AddLast(1);
nums.AddLast(2);
nums.AddLast(3);

LinkedListNode<int> node = nums.Find(2);

Console.WriteLine(node.Value);
# 输出结果

2

原文地址:https://blog.csdn.net/weixin_52173250/article/details/143879972

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!