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

server/2024/11/23 22:10:32/

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

http://www.ppmy.cn/server/144366.html

相关文章

ETCD调优

ETCD是一种高可用的分布式键值存储&#xff0c;广泛用于Kubernetes和其他云原生应用。为了确保ETCD在生产环境中的性能和稳定性&#xff0c;以下是一些调优建议&#xff1a; 1. 硬件和网络 节点配置&#xff1a;使用较高配置的硬件&#xff0c;尤其是CPU和内存&#xff0c;以…

Sobey融媒体 硬编码漏洞复现

0x01 产品描述: ‌ Sobey融媒体‌是成都索贝数码科技股份有限公司(简称索贝)提供的一系列融媒体解决方案,旨在帮助媒体机构实现新闻内容的快速采集、高效生产、首发首推、安全可控和灵活迭代。这些解决方案主要应用于广播、电视和新媒体各渠道,提供轻量化、移动化…

PDF内容提取,MinerU使用

准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…

【AI系统】GPU 架构回顾(从2010年-2017年)

GPU 架构回顾 1999 年&#xff0c;英伟达发明了 GPU&#xff08;graphics processing unit&#xff09;&#xff0c;本文将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构&#xff0c;时间跨度从 2010 年至 2024 年&#xff0c;具体包括费米&#xff08;Feimi&#xff09;…

OpenAI 助力数据分析中的模式识别与趋势预测

数据分析师的日常工作中&#xff0c;发现数据中的隐藏模式和预测未来趋势是非常重要的一环。借助 OpenAI 的强大语言模型&#xff08;如 GPT-4&#xff09;&#xff0c;我们可以轻松完成这些任务&#xff0c;无需深厚的编程基础&#xff0c;也能快速上手。 在本文中&#xff0…

[JavaWeb]微头条项目

完整笔记和项目代码&#xff1a; https://pan.baidu.com/s/1PZBO0mfpwDPic4Ezsk8orA?pwdwwp5 提取码: wwp5 JavaWeb-微头条项目开发 1 项目简介 1.1 业务介绍 微头条新闻发布和浏览平台,主要包含业务如下 用户功能 注册功能登录功能 头条新闻 新闻的分页浏览通过标题关键字搜…

使用 PyTorch 实现并训练 VGGNet 用于 MNIST 分类

本文将展示如何使用 PyTorch 实现一个经典的 VGGNet 网络&#xff0c;并在 MNIST 数据集上进行训练和测试。我们将从模型构建开始&#xff0c;涵盖数据预处理、模型训练、评估、保存与加载模型&#xff0c;以及可视化预测结果等全过程。 1. VGGNet 模型的实现 首先&#xff0c;…

Node.js笔记(三)局域网聊天室构建1

目标 用户与服务端建立通信&#xff0c;服务端能检测到用户端的连接信息 代码 JS部分<chatroom.js> const express require(express) const http require(http) const {Server} require(socket.io)const app express() const se…