利用C#双向链表优化数据结构

avatar
作者
筋斗云
阅读量:0

在C#中,双向链表是一种常见的数据结构,它可以高效地在列表的任意位置插入或删除元素

首先,我们需要创建一个表示链表节点的类:

public class ListNode<T> {     public T Value;     public ListNode<T> Prev;     public ListNode<T> Next;      public ListNode(T value)     {         Value = value;         Prev = null;         Next = null;     } } 

接下来,我们创建一个双向链表类,实现基本的操作方法,如添加、删除和查找节点:

public class DoublyLinkedList<T> {     private ListNode<T> _head;     private ListNode<T> _tail;     private int _count;      public DoublyLinkedList()     {         _head = null;         _tail = null;         _count = 0;     }      public void AddFirst(T value)     {         var newNode = new ListNode<T>(value);         if (_head == null)         {             _head = newNode;             _tail = newNode;         }         else         {             newNode.Next = _head;             _head.Prev = newNode;             _head = newNode;         }         _count++;     }      public void AddLast(T value)     {         var newNode = new ListNode<T>(value);         if (_tail == null)         {             _head = newNode;             _tail = newNode;         }         else         {             newNode.Prev = _tail;             _tail.Next = newNode;             _tail = newNode;         }         _count++;     }      public bool Remove(T value)     {         var node = Find(value);         if (node == null) return false;          if (node.Prev != null)         {             node.Prev.Next = node.Next;         }         else         {             _head = node.Next;         }          if (node.Next != null)         {             node.Next.Prev = node.Prev;         }         else         {             _tail = node.Prev;         }          _count--;         return true;     }      public ListNode<T> Find(T value)     {         var current = _head;         while (current != null)         {             if (current.Value.Equals(value)) return current;             current = current.Next;         }         return null;     }      public int Count => _count; } 

这个双向链表类提供了基本的添加、删除和查找功能。你可以根据需要对其进行扩展,例如实现更复杂的查找算法、支持索引访问等。使用这个双向链表类,你可以轻松地在C#中创建和优化数据结构。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!