static void TestCycleLink() { //添加测试 int element = 0; CycleLink <int> c = new CycleLink <int>(); c.Add(3); PrintCycleLink(c, "添加一个元素后:"); c.Delete(1, ref element); c.AddAtFrist(5); c.Add(8); c.AddAtFrist(10); PrintCycleLink(c, "删除一个元素后再加三个元素:"); Console.WriteLine(); //插入和删除 c.Insert(2, 100); PrintCycleLink(c, "在2号位插入100后:"); c.Delete(3, ref element); PrintCycleLink(c, "删除第三个元素后:"); c.Delete(1, ref element); PrintCycleLink(c, "再删除第一个元素后:"); Console.WriteLine(); //通过一个节点遍历链表 c.Add(1001); c.AddAtFrist(22); c.Add(88); Console.Write("通过第二个节点遍历整个链表:"); c.CycleLinkByNode(c.GetNodeByIndex(2)); Console.WriteLine(); Console.WriteLine(); //索引测试 c.GetElement(-1, ref element); c.Delete(200, ref element); c.GetNodeByIndex(-2); c.Insert(20, 30); Console.WriteLine(); //测试链接两链表 CycleLink <int> c2 = new CycleLink <int>(); c2.Add(99); c2.Add(33); c2.Add(22); PrintCycleLink(c, "链接链表前:"); c.Connect(c2); PrintCycleLink(c, "链接链表后:"); c.Add(0); PrintCycleLink(c, "链接链表后添加元素:"); }
static void PrintCycleLink(CycleLink <int> c, string text = "输出:") { Console.Write(text); c.CycleLinkByNode(c.GetNodeByIndex(0)); Console.WriteLine(); }