您的位置:首页 > 理论基础 > 数据结构算法

数据结构(C#)--双向链表

2008-01-06 20:20 423 查看
双向链表的定义以及常用的操作


namespace DounlyLinkedlist




...{


//定义双向链表的结点


public class Node




...{


public Object Element;


public Node FLink;


public Node BLink;




public Node()




...{


Element = null;


FLink = null;


BLink = null;


}




public Node(Object element)




...{


Element = element;


FLink = null;


BLink = null;


}




}




//链表操作的类


public class LinkedList




...{





public Node Header;




public LinkedList()




...{


Header = new Node("Header");


Header.FLink = null;


Header.BLink = null;


}




//查找结点


private Node Find(Object item)




...{


Node Current = new Node();


Current = Header;


while (Current.Element != item)




...{


Current = Current.FLink;


}


return Current;


}




//插入结点


public void InsertNode(Object item,Object postionItem)




...{


Node Current = new Node();


Node NewItem = new Node(item);


Current = Find(postionItem);


if (Current != null)




...{


NewItem.FLink = Current.FLink;


NewItem.BLink = Current;


Current.FLink = NewItem;


}


}




//删除结点


public void Remove(Object item)




...{


Node P = Find(item);


if (P.FLink != null)




...{


P.BLink.FLink = P.FLink;


P.FLink.BLink = P.BLink;


P.BLink = null;


P.FLink = null;


}





}






//查找双向链表最后一个结点元素


private Node FindLast()




...{


Node Current = new Node();


Current = Header;


while (!(Current.FLink == null))




...{


Current = Current.FLink;


}


return Current;


}






//逆向打印双向链表


public void PrintReverse()




...{


Node Current = new Node();


Current = FindLast();


while (!(Current.BLink == null))




...{


Console.WriteLine(Current.Element);


Current = Current.BLink;


}


}




//打印双向链表


public void Print()




...{


Node Current = new Node();


Current = Header;


while (!(Current.FLink == null))




...{


Console.WriteLine(Current.FLink.Element);


Current = Current.FLink;


}


}


}


}



具体调用代码:




static void Main(string[] args)




...{




DounlyLinkedlist.Node FirstNode = new DounlyLinkedlist.Node("Tommy");


DounlyLinkedlist.Node SecondNode = new DounlyLinkedlist.Node("Wei");


DounlyLinkedlist.Node ThirdNode = new DounlyLinkedlist.Node("Chencaixia");


DounlyLinkedlist.Node FourthNode = new DounlyLinkedlist.Node("weiwei");


DounlyLinkedlist.LinkedList MyDoublrLink = new DounlyLinkedlist.LinkedList();


MyDoublrLink.Header.FLink = FirstNode;


MyDoublrLink.Header.BLink = null;


FirstNode.FLink = SecondNode;


FirstNode.BLink = MyDoublrLink.Header;


SecondNode.FLink = ThirdNode;


SecondNode.BLink = FirstNode;


ThirdNode.FLink = FourthNode;


ThirdNode.BLink = SecondNode;


FourthNode.BLink = ThirdNode;


FourthNode.FLink = null;


MyDoublrLink.InsertNode("test", "Chencaixia");


MyDoublrLink.Remove("Wei");


MyDoublrLink.Print();





Console.ReadLine();


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: