📅  最后修改于: 2023-12-03 15:42:07.608000             🧑  作者: Mango
在C#编程中,有时需要使用链接列表来存储单个元素。链接列表是一种数据集合,可以存储任意数量的元素,并且每个元素都包含指向下一个元素的引用。在本篇文章中,将介绍如何使用C#编写链接列表,并提供一些相关资源供参考。
C#提供了自带的LinkedList
类,该类是一个双向链表。可以使用LinkedListNode
类来访问列表中的元素,并使用AddFirst()
、AddAfter()
、AddLast()
、RemoveFirst()
、Remove()
、Clear()
等方法进行元素的添加、删除、清空等操作。
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// 创建列表
var list = new LinkedList<string>();
// 添加元素
list.AddLast("a");
list.AddLast("b");
list.AddLast("c");
// 遍历元素
var node = list.First;
while (node != null)
{
Console.WriteLine(node.Value);
node = node.Next;
}
// 删除元素
list.RemoveFirst();
// 清空列表
list.Clear();
}
}
单链表是一种更简单的链表,只包含指向下一个元素的引用。在C#中,可以使用自定义的类来实现单链表。下面是一个单链表的示例代码。
using System;
class ListNode<T>
{
public T val;
public ListNode<T> next;
public ListNode(T val = default, ListNode<T> next = null)
{
this.val = val;
this.next = next;
}
}
class LinkedList<T>
{
private ListNode<T> head;
public LinkedList()
{
head = null;
}
public void AddLast(T value)
{
if (head == null) {
head = new ListNode<T>(value);
return;
}
var node = head;
while (node.next != null) {
node = node.next;
}
node.next = new ListNode<T>(value);
}
public void RemoveFirst()
{
if (head == null) {
return;
}
head = head.next;
}
public void Clear()
{
head = null;
}
public void Traverse()
{
var node = head;
while (node != null) {
Console.WriteLine(node.val);
node = node.next;
}
}
}
class Program
{
static void Main(string[] args)
{
// 创建列表
var list = new LinkedList<string>();
// 添加元素
list.AddLast("a");
list.AddLast("b");
list.AddLast("c");
// 遍历元素
list.Traverse();
// 删除元素
list.RemoveFirst();
// 清空列表
list.Clear();
}
}