Пример #1
0
        public object Clone()
        {
            if (head == null)
            {
                return(new LinkList <T>());
            }

            var temp = head.Next;

            if (temp == null)
            {
                return(new LinkList <T>(head.Value));
            }

            var buff = new LinkList <T>(head.Value);

            while (temp != null)
            {
                buff.Add(temp.Value);
                temp = temp.Next;
            }

            return(buff);
        }
Пример #2
0
        static void Main(string[] args)
        {
            LinkList <String> test_NT_NC = new LinkList <String>(false, false);
            LinkList <String> test_NT_C  = new LinkList <String>(false, true);
            LinkList <String> test_T_NC  = new LinkList <String>(true, false);
            LinkList <String> test_T_C   = new LinkList <String>(true, true);

            //插入测试1
            for (Int32 i = 1; i <= 6; i++)
            {
                test_NT_NC.InsectNode(i, i.ToString());
                test_NT_C.InsectNode(i, i.ToString());
                test_T_NC.InsectNode(i, i.ToString());
                test_T_C.InsectNode(i, i.ToString());
            }
            //输出
            display(test_NT_NC, "test_NT_NC");
            display(test_NT_C, "test_NT_C");
            display(test_T_NC, "test_T_NC");
            display(test_T_C, "test_T_C");
            Console.ReadLine();
            Console.Clear();

            //删除测试
            for (Int32 i = 1; i <= 10; i++)
            {
                test_NT_NC.DeleteNode(1);
                test_NT_C.DeleteNode(1);
                test_T_NC.DeleteNode(1);
                test_T_C.DeleteNode(1);
            }
            //输出
            display(test_NT_NC, "test_NT_NC");
            display(test_NT_C, "test_NT_C");
            display(test_T_NC, "test_T_NC");
            display(test_T_C, "test_T_C");
            Console.ReadLine();
            Console.Clear();

            //插入测试2
            for (Int32 i = 1; i <= 20; i++)
            {
                test_NT_NC.InsectNode(i, i.ToString());
                test_NT_C.InsectNode(i, i.ToString());
                test_T_NC.InsectNode(i, i.ToString());
                test_T_C.InsectNode(i, i.ToString());
            }
            //输出
            display(test_NT_NC, "test_NT_NC");
            display(test_NT_C, "test_NT_C");
            display(test_T_NC, "test_T_NC");
            display(test_T_C, "test_T_C");
            Console.ReadLine();
            Console.Clear();

            //搜索测试
            Int32 loc = 0;

            display(test_NT_NC, "test_NT_NC");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.WriteLine("查找数据:" + i);
                test_NT_NC.SearchNode(ref loc, i.ToString());
                Console.Out.WriteLine("位置信息:" + loc);
                Console.Out.WriteLine();
            }
            Console.ReadLine();
            Console.Clear();
            display(test_NT_C, "test_NT_C");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.WriteLine("查找数据:" + i);
                test_NT_C.SearchNode(ref loc, i.ToString());
                Console.Out.WriteLine("位置信息:" + loc);
                Console.Out.WriteLine();
            }
            Console.ReadLine();
            Console.Clear();
            display(test_T_NC, "test_T_NC");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.WriteLine("查找数据:" + i);
                test_T_NC.SearchNode(ref loc, i.ToString());
                Console.Out.WriteLine("位置信息:" + loc);
                Console.Out.WriteLine();
            }
            Console.ReadLine();
            Console.Clear();
            display(test_T_C, "test_T_C");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.WriteLine("查找数据:" + i);
                test_T_C.SearchNode(ref loc, i.ToString());
                Console.Out.WriteLine("位置信息:" + loc);
                Console.Out.WriteLine();
            }
            Console.ReadLine();
            Console.Clear();

            //GetNextValue测试
            String val = "\u0000";

            display(test_NT_NC, "test_NT_NC");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.Write(test_NT_NC.GetNextValue(ref val) + "   ");
                Console.Out.WriteLine(val);
                val = null;
            }
            test_NT_NC.ResetPointer();
            Console.ReadLine();
            Console.Clear();
            display(test_NT_C, "test_NT_C");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.Write(test_NT_C.GetNextValue(ref val) + "   ");
                Console.Out.WriteLine(val);
                val = null;
            }
            test_NT_C.ResetPointer();
            Console.ReadLine();
            Console.Clear();
            display(test_T_NC, "test_T_NC");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.Write(test_T_NC.GetNextValue(ref val) + "   ");
                Console.Out.WriteLine(val);
                val = null;
            }
            test_T_NC.ResetPointer();
            Console.ReadLine();
            Console.Clear();
            display(test_T_C, "test_T_C");
            for (Int32 i = 1; i <= 12; i++)
            {
                Console.Out.Write(test_T_C.GetNextValue(ref val) + "   ");
                Console.Out.WriteLine(val);
                val = null;
            }
            test_T_C.ResetPointer();
            Console.ReadLine();
            Console.Clear();

            //清空测试
            test_NT_NC.ClearAll();
            test_NT_C.ClearAll();
            test_T_NC.ClearAll();
            test_T_C.ClearAll();
            //输出
            display(test_NT_NC, "test_NT_NC");
            display(test_NT_C, "test_NT_C");
            display(test_T_NC, "test_T_NC");
            display(test_T_C, "test_T_C");
            Console.ReadLine();
            Console.Clear();

            //结束
            Console.Out.WriteLine("测试结束!");
            Console.Out.WriteLine();
            Console.Out.WriteLine("按任意键退出...");
            Console.ReadLine();
        }
Пример #3
0
        //链表t的所有结点的指针均正确无误 当且仅当 链表t在方法中输出正确的结果
        static void display(LinkList <String> t, String s)
        {
            Node <String> pr;

            Console.Out.WriteLine("链表:");
            Console.Out.WriteLine(s);
            //当前链表的状态
            Console.Out.WriteLine("当前链表的状态:");
            Console.Out.Write("isTwoWay = " + t.GetIsTwoWay() + "   ");
            Console.Out.Write("isCircle = " + t.GetIsCircle() + "   ");
            Console.Out.Write("isEmpty  = " + t.GetIsEmpty() + "   ");
            Console.Out.WriteLine("lenth = " + t.GetLenth());
            //当前的链表内容为
            Console.Out.WriteLine("当前的链表内容为:");
            pr = t.GetContent();
            pr = pr.GetNext();
            if (t.GetIsCircle())
            {
                while (pr != t.GetContent())
                {
                    Console.Out.Write(pr.GetValue() + " ");
                    pr = pr.GetNext();
                }
            }
            else
            {
                while (pr != null)
                {
                    Console.Out.Write(pr.GetValue() + " ");
                    pr = pr.GetNext();
                }
            }
            Console.Out.WriteLine();
            //链表内容逆向输出
            Console.Out.WriteLine("链表内容逆向输出:");
            pr = t.GetContent();
            if (t.GetIsTwoWay())
            {
                if (t.GetIsCircle())
                {
                    pr = pr.GetLast();
                    while (pr != t.GetContent())
                    {
                        Console.Out.Write(pr.GetValue() + " ");
                        pr = pr.GetLast();
                    }
                }
                else
                {
                    while (pr.GetNext() != null)
                    {
                        pr = pr.GetNext();
                    }
                    while (pr != t.GetContent())
                    {
                        Console.Out.Write(pr.GetValue() + " ");
                        pr = pr.GetLast();
                    }
                }
                Console.Out.WriteLine();
            }
            else
            {
                Console.Out.WriteLine("(不需要测试)");
            }
            Console.Out.WriteLine();
        }
Пример #4
0
 public LinkListNode(T value, LinkList <T> list)
 {
     Value = value;
     List  = list;
 }
Пример #5
0
 private void Deconstruct(out LinkListNode <T> head, out LinkList <T> tail)
 {
     head = this.head;
     tail = Tail;
 }
Пример #6
0
 private void buttonQuit_Click(object sender, EventArgs e)
 {
     _demo = null;
     Application.Exit();
 }