您的位置:首页 > 编程语言 > C#

C#实现双向链表

2013-03-31 23:30 387 查看

一、定义

双向链表是链表的一种,它的每个数据节点都有2个指针,分别指向直接前驱和直接后序。所以,从双向链表中的任意一个节点开始,都可以很方便的访问它的前驱节点和后继结点。

Test Code

static void Main(string[] args)
{
Console.WriteLine("-------------------------------------");
Console.WriteLine("双链表测试开始...");

DbLinkedList<String> dblink = new DbLinkedList<string>();
DbNode<String> head = new DbNode<string>("x");
dblink.Head = head;
dblink.AddBefore("w", 0);
dblink.AddBefore("v", 0);
dblink.AddLast("y");

int count = dblink.Count();
dblink.AddBefore("z", count);

Console.WriteLine(count);

string result = dblink.ToString();
Console.WriteLine(result);
//dblink.Print();

int position = dblink.IndexOf("z");
Console.WriteLine("z在list中的第{0}位", position);

Console.WriteLine("在list中第0个元素是:{0}",dblink[0]);
Console.WriteLine("在list中第3个元素是:{0}", dblink[2]);

string item = dblink.RemoveAt(2);
Console.WriteLine("删除了list中的第2个元素:{0}", item);

Console.WriteLine(dblink.ToString());

dblink.AddBefore("x", 2);

Console.WriteLine(dblink.ToString());

Console.WriteLine("list中第2个元素是:{0}",dblink.GetItemAt(2));

Console.WriteLine(dblink.ToString());

//反转
Console.WriteLine("-------链表反转--------");

dblink.Reverse();
Console.WriteLine(dblink.ToString());

dblink.AddAfter("1", 0);
dblink.AddAfter("2", 1);
dblink.AddAfter("6", 6);
dblink.AddAfter("8", 7);
dblink.AddAfter("A", 10);//position error.

Console.WriteLine(dblink.ToString());

string tail = dblink.GetItemAt(dblink.Count() - 1);
Console.WriteLine("结尾的元素是:{0}", tail);

Console.WriteLine(dblink.ReverseByPrev());

Console.WriteLine("链表是:{0}", dblink.ToString());

Console.WriteLine("---链表中的第一个节点是:{0}", dblink[0]);
Console.WriteLine("---链表中的最后一个节点是:{0}", dblink[dblink.Count() - 1]);

Console.WriteLine("---First():{0}", dblink.Fisrt());

Console.WriteLine("---Last():{0}", dblink.Last());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: