阅读量:0
在C#中,双向链表是一种数据结构,其中每个节点都有两个指针,一个指向前一个节点,另一个指向后一个节点
首先,我们需要定义一个双向链表节点类:
public class DoublyLinkedListNode<T> { public T Value; public DoublyLinkedListNode<T> Previous; public DoublyLinkedListNode<T> Next; public DoublyLinkedListNode(T value) { Value = value; Previous = null; Next = null; } }
接下来,我们可以实现插入和删除操作:
public class DoublyLinkedList<T> { public DoublyLinkedListNode<T> Head; public DoublyLinkedListNode<T> Tail; // 在链表头部插入节点 public void InsertAtHead(T value) { var newNode = new DoublyLinkedListNode<T>(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<T>(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
用于删除指定值的节点。你可以根据需要调用这些方法来操作双向链表。