legongju.com
我们一直在努力
2025-01-13 16:44 | 星期一

C#双向链表的插入与删除操作

在C#中,双向链表是一种数据结构,其中每个节点都有两个指针,一个指向前一个节点,另一个指向后一个节点

首先,我们需要定义一个双向链表节点类:

public class DoublyLinkedListNode
{
    public T Value;
    public DoublyLinkedListNode Previous;
    public DoublyLinkedListNode Next;

    public DoublyLinkedListNode(T value)
    {
        Value = https://www.yisu.com/ask/value;>

接下来,我们可以实现插入和删除操作:

public class DoublyLinkedList
{
    public DoublyLinkedListNode Head;
    public DoublyLinkedListNode Tail;

    // 在链表头部插入节点
    public void InsertAtHead(T value)
    {
        var newNode = new DoublyLinkedListNode(value);
        if (Head == null)
        {
            Head = newNode;
            Tail = newNode;
        }
        else
        {
            newNode.Next = Head;
            Head.Previous = newNode;
            Head = newNode;
        }
    }

    // 在链表尾部插入节点
    public void InsertAtTail(T value)
    {
        var newNode = new DoublyLinkedListNode(value);
        if (Tail == null)
        {
            Head = newNode;
            Tail = newNode;
        }
        else
        {
            newNode.Previous = Tail;
            Tail.Next = newNode;
            Tail = newNode;
        }
    }

    // 删除指定值的节点
    public void Delete(T value)
    {
        var currentNode = Head;
        while (currentNode != null)
        {
            if (currentNode.Value.Equals(value))
            {
                if (currentNode.Previous != null)
                    currentNode.Previous.Next = currentNode.Next;
                else
                    Head = currentNode.Next;

                if (currentNode.Next != null)
                    currentNode.Next.Previous = currentNode.Previous;
                else
                    Tail = currentNode.Previous;
            }
            currentNode = currentNode.Next;
        }
    }
}

这里我们实现了三个方法:InsertAtHead用于在链表头部插入节点,InsertAtTail用于在链表尾部插入节点,Delete用于删除指定值的节点。你可以根据需要调用这些方法来操作双向链表。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/106878.html

相关推荐

  • C# CopyFromScreen的注意事项

    C# CopyFromScreen的注意事项

    CopyFromScreen 是 C# 中 Graphics 类的一个方法,用于从屏幕上复制一个矩形区域到一个位图(Bitmap)对象 性能考虑:CopyFromScreen 方法可能会消耗大量的系统资...

  • C#中如何高效地进行屏幕拷贝

    C#中如何高效地进行屏幕拷贝

    在C#中,要高效地进行屏幕拷贝,可以使用Graphics类的CopyFromScreen方法
    using System;
    using System.Drawing;
    using System.Windows.Forms; na...

  • C#实现屏幕拷贝的代码示例

    C#实现屏幕拷贝的代码示例

    在C#中,可以使用Graphics类和Bitmap类来实现屏幕截图
    using System;
    using System.Drawing;
    using System.Windows.Forms; namespace ScreenCapt...

  • 利用C# CopyFromScreen截图的方法

    利用C# CopyFromScreen截图的方法

    在C#中,可以使用Graphics.CopyFromScreen方法来截取屏幕上的一部分区域
    using System;
    using System.Drawing;
    using System.Windows.Forms; nam...

  • 如何用C#构建双向链表

    如何用C#构建双向链表

    在C#中,要创建一个双向链表,首先需要定义一个表示链表节点的类,其中包含指向前一个和后一个节点的引用
    public class Node
    { public T Data { get; ...

  • C#中双向链表的实现原理

    C#中双向链表的实现原理

    在C#中,双向链表是一种数据结构,它包含一系列按线性顺序连接的元素
    以下是C#中双向链表的基本实现原理: 节点(Node):双向链表中的每个元素都称为节点。...

  • C# Loading的未来发展趋势

    C# Loading的未来发展趋势

    C# Loading 是一个广泛应用于游戏开发、数据处理和其他需要异步加载资源的场景的技术 更高效的异步编程模型:随着 C# 语言的不断发展,我们可以期待看到更高效的...

  • C# Loading在Web应用中的实现

    C# Loading在Web应用中的实现

    在Web应用中,C# Loading通常是指在页面加载或执行某个操作时显示一个加载动画或提示,以告知用户页面正在加载或处理中。这可以提高用户体验,减少用户在等待过程...