📜  链接列表 c# single - C# (1)

📅  最后修改于: 2023-12-03 15:42:07.608000             🧑  作者: Mango

链接列表 C# Single - C#

在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();
    }
}
相关资源
  1. MSDN LinkedList Class - Microsoft官方文档
  2. 使用C#编写链表的示例 - tutorialspoint网站上的代码示例
  3. Data Structures and Algorithms with C# - Github项目,包含了C#编写的链表代码片段
单链表

单链表是一种更简单的链表,只包含指向下一个元素的引用。在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();
    }
}
相关资源
  1. 用C#实现链表的示例 - C# Corner网站上的示例代码,包含了单链表和双链表的实现
  2. Single Linked List in C# - Codingame网站上的示例代码片段