阅读量:0
在C#中,可以使用类来实现双向链表的高级功能
using System; public class Node { public int Value; public Node Previous; public Node Next; public Node(int value) { Value = value; Previous = null; Next = null; } } public class DoublyLinkedList { private Node _head; private Node _tail; public DoublyLinkedList() { _head = null; _tail = null; } // 在链表末尾添加节点 public void Add(int value) { Node newNode = new Node(value); if (_head == null) { _head = newNode; _tail = newNode; } else { newNode.Previous = _tail; _tail.Next = newNode; _tail = newNode; } } // 删除指定值的节点 public void Remove(int value) { Node current = _head; while (current != null) { if (current.Value == value) { if (current.Previous != null) { current.Previous.Next = current.Next; } else { _head = current.Next; } if (current.Next != null) { current.Next.Previous = current.Previous; } else { _tail = current.Previous; } } current = current.Next; } } // 反转链表 public void Reverse() { Node current = _head; Node temp = null; while (current != null) { temp = current.Previous; current.Previous = current.Next; current.Next = temp; current = current.Previous; } if (temp != null) { _head = temp.Previous; } } // 打印链表 public void Print() { Node current = _head; while (current != null) { Console.Write(current.Value + " "); current = current.Next; } Console.WriteLine(); } } class Program { static void Main(string[] args) { DoublyLinkedList list = new DoublyLinkedList(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); Console.WriteLine("Original list:"); list.Print(); list.Remove(3); Console.WriteLine("List after removing 3:"); list.Print(); list.Reverse(); Console.WriteLine("Reversed list:"); list.Print(); } }
这个示例中,我们创建了一个DoublyLinkedList
类,用于实现双向链表。这个类包含了Add
、Remove
、Reverse
和Print
方法,分别用于在链表末尾添加节点、删除指定值的节点、反转链表和打印链表。在Main
方法中,我们创建了一个DoublyLinkedList
对象,并对其进行了一系列操作,以展示这些高级功能。