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, "链接链表后添加元素:");
        }
Пример #2
0
        //链接两条链表
        public bool Connect(CycleLink <T> C)
        {
            Node head1 = this._last.next;
            //取添加的链表的第一个结点
            Node first2 = C._last.next.next;

            this._last.next     = first2;
            C._last.next        = head1;
            this._currentLenth += C._currentLenth;
            this._last          = C._last;

            return(true);
        }
 static void PrintCycleLink(CycleLink <int> c, string text = "输出:")
 {
     Console.Write(text);
     c.CycleLinkByNode(c.GetNodeByIndex(0));
     Console.WriteLine();
 }