数据结构(C#):双链表2011-08-16 博客园 飘遥(Zhenxing Zhou)双链表每个数据节点都有两个指针,分别指向其后继和前驱节点。与单链表只能访问其后继结点相比 ,具有更大的灵活性;当然占用更多的存储空间。前面的单链表和这里的双链表都使用了空的头结点或称哑节点,目的是实现有序链表时更方便。直接看代码:/* * File : DoubleLinkedList.cs * Author : Zhenxing Zhou * Date : 2008-12-06, 2008-12-07 * Blog : http://www.xianfen.net/ */ using System; using System.Collections.Generic;
namespace Xianfen.Net.DataStructure { public class DoubleLinkedListNode<T> { private T m_Value; private DoubleLinkedListNode<T> m_Next; private DoubleLinkedListNode<T> m_Prior;
public T Value { get { return m_Value; } set { m_Value = value; } }
public DoubleLinkedListNode<T> Next { get { return m_Next; } set { m_Next = value; } }
public DoubleLinkedListNode<T> Prior { get { return m_Prior; } set { m_Prior = value; } }
public DoubleLinkedListNode() {
}
public DoubleLinkedListNode(T t) { m_Value = t; } }
public class DoubleLinkedList<T> : ILinearList<T> { protected int m_Count; protected DoubleLinkedListNode<T> m_Head; protected DoubleLinkedListNode<T> m_Tail;
public DoubleLinkedList() { m_Count = 0; m_Head = new DoubleLinkedListNode<T>(); m_Tail = m_Head; }
public DoubleLinkedList(T t) : this() { m_Count = 1; m_Head.Next = new DoubleLinkedListNode<T>(t); m_Tail = m_Head.Next; m_Tail.Prior = m_Head; }