雙向鏈表的定義以及常用的操作
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144407.gif)
namespace DounlyLinkedlist
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144459.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144560.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//定義雙向鏈表的結點
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public class Node
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Object Element;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Node FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Node BLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Node()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Element = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
FLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
BLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Node(Object element)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Element = element;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
&n FLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
BLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//鏈表操作的類
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public class LinkedList
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public Node Header;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public LinkedList()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Header = new Node("Header");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Header.FLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Header.BLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//查找結點
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
private Node Find(Object item)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node Current = new Node();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Header;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
while (Current.Element != item)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Current.FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
return Current;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//插入結點
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public void InsertNode(Object item,Object postionItem)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node Current = new Node();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node NewItem = new Node(item);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Find(postionItem);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
if (Current != null)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
NewItem.FLink = Current.FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
NewItem.BLink = Current;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current.FLink = NewItem;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//刪除結點
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public void Remove(Object item)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node P = Find(item);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
if (P.FLink != null)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
P.BLink.FLink = P.FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
P.FLink.BLink = P.BLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
P.BLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
P.FLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//查找雙向鏈表最後一個結點元素
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
private Node FindLast()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node Current = new Node();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Header;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
& while (!(Current.FLink == null))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Current.FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
return Current;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//逆向打印雙向鏈表
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public void PrintReverse()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node Current = new Node();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = FindLast();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
while (!(Current.BLink == null))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Console.WriteLine(Current.Element);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Current.BLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
//打印雙向鏈表
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
public void Print()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Node Current = new Node();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Header;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
while (!(Current.FLink == null))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144542.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Console.WriteLine(Current.FLink.Element);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Current = Current.FLink;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144663.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144637.gif)
}
具體調用代碼:
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144407.gif)
static void Main(string[] args)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144459.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144560.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
DounlyLinkedlist.Node FirstNode = new DounlyLinkedlist.Node("Tommy");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
DounlyLinkedlist.Node SecondNode = new DounlyLinkedlist.Node("Wei");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
DounlyLinkedlist.Node ThirdNode = new DounlyLinkedlist.Node("Chencaixia");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
DounlyLinkedlist.Node FourthNode = new DounlyLinkedlist.Node("weiwei");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
DounlyLinkedlist.LinkedList MyDoublrLink = new DounlyLinkedlist.LinkedList();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
MyDoublrLink.Header.FLink = FirstNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
MyDoublrLink.Header.BLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
FirstNode.FLink = SecondNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
FirstNode.BLink = MyDoublrLink.Header;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
SecondNode.FLink = ThirdNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
SecondNode.BLink = FirstNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
ThirdNode.FLink = FourthNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
ThirdNode.BLink = SecondNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
FourthNode.BLink = ThirdNode;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
FourthNode.FLink = null;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
MyDoublrLink.InsertNode("test", "Chencaixia");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
MyDoublrLink.Remove("Wei");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
MyDoublrLink.Print();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144554.gif)
Console.ReadLine();
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311144637.gif)
}