public void CircularLinkedList_Test()
        {
            var list = new CircularLinkedList <string>();

            list.Insert("a");
            list.Insert("b");
            list.Insert("c");
            list.Insert("c");

            Assert.AreEqual(list.Count(), 4);
            Assert.AreEqual(list.GetAllNodes().Count, 4);

            list.Delete("a");
            Assert.AreEqual(list.Count(), 3);

            list.Delete("b");
            Assert.AreEqual(list.Count(), 2);

            list.Delete("c");
            Assert.AreEqual(list.Count(), 1);

            list.Insert("a");
            Assert.AreEqual(list.Count(), 2);

            list.Delete("a");
            Assert.AreEqual(list.Count(), 1);

            list.Delete("c");
            Assert.AreEqual(list.Count(), 0);

            list.Insert("a");
            list.Insert("b");
            list.Insert("c");
            list.Insert("c");

            Assert.AreEqual(list.Count(), 4);
            Assert.AreEqual(list.GetAllNodes().Count, 4);

            list.Delete("a");
            Assert.AreEqual(list.Count(), 3);

            list.Delete("b");
            Assert.AreEqual(list.Count(), 2);

            list.Delete("c");
            Assert.AreEqual(list.Count(), 1);

            list.Insert("a");
            Assert.AreEqual(list.Count(), 2);

            list.Delete("a");
            Assert.AreEqual(list.Count(), 1);

            list.Delete("c");
            Assert.AreEqual(list.Count(), 0);
        }
Exemplo n.º 2
0
        public void CircularLinkedList()
        {
            // Arrange
            var circularLinkedList = new CircularLinkedList <int>();

            // Act
            circularLinkedList.Add(1);
            circularLinkedList.Add(2);
            circularLinkedList.Add(3);
            circularLinkedList.Add(4);
            var count1 = circularLinkedList.Count;

            circularLinkedList.Delete(3);
            var count2 = circularLinkedList.Count;

            var count = 0;

            for (var i = 0; i < circularLinkedList.Count * 2; i++)
            {
                count++;
            }

            // Assert
            Assert.Equal(4, count1);
            Assert.Equal(3, count2);
            Assert.Equal(circularLinkedList.Count * 2, count);
        }
Exemplo n.º 3
0
        public static void Main(string[] args)
        {
            SingleLinkedList <int>   SingleLinkedList   = new SingleLinkedList <int>();
            DoubleLinkedList <int>   doubleLinkedList   = new DoubleLinkedList <int>();
            CircularLinkedList <int> circularLinkedlist = new CircularLinkedList <int>();

            // Single linked list
            //SingleLinkedList.AddLast(10);
            //SingleLinkedList.AddFirst(5);
            //SingleLinkedList.InsertAfter(5, 8);
            //SingleLinkedList.InsertBefore(8, 6);
            //SingleLinkedList.Display();

            // Double linked list
            //doubleLinkedList.AddLast(10);
            //doubleLinkedList.AddFirst(5);
            //doubleLinkedList.InsertAfter(5, 8);
            //doubleLinkedList.InsertBefore(8, 6);
            //doubleLinkedList.Display();

            // Circular linkedlist
            circularLinkedlist.AddLast(10);
            circularLinkedlist.AddFirst(5);
            circularLinkedlist.InsertAfter(5, 8);
            circularLinkedlist.InsertBefore(8, 6);
            circularLinkedlist.Delete(6);
            circularLinkedlist.Display();

            Console.Read();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var circularList = new CircularLinkedList <int>();

            circularList.add(1);
            circularList.add(2);
            circularList.add(3);
            circularList.add(4);
            circularList.add(5);

            foreach (var item in circularList)
            {
                Console.WriteLine(item);
            }

            circularList.Delete(3);

            foreach (var item in circularList)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();

            var duplexList = new DuplexLinkedList <int>();

            duplexList.Add(1);
            duplexList.Add(2);
            duplexList.Add(3);
            duplexList.Add(4);
            duplexList.Add(5);
            duplexList.Add(6);
            duplexList.Add(7);

            foreach (var item in duplexList)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            duplexList.Delete(3);
            duplexList.Delete(6);

            foreach (var item in duplexList)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            var reverse = duplexList.Reverse();

            foreach (var item in reverse)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            Console.ReadLine();
        }
Exemplo n.º 5
0
        public void TestCircularLinkedList()
        {
            CircularLinkedList <int> circularLinkedlist = new CircularLinkedList <int>();

            circularLinkedlist.AddLast(10);
            circularLinkedlist.AddFirst(5);
            circularLinkedlist.InsertAfter(5, 8);
            circularLinkedlist.InsertBefore(8, 6);
            circularLinkedlist.Delete(6);
            //circularLinkedlist.Display();

            Assert.IsTrue(circularLinkedlist.Head.Next.Data == 5);
        }
Exemplo n.º 6
0
    private void OnGUI()
    {
        insertValue = GUI.TextField(new Rect(110, 40, 80, 50), insertValue);

        indexValue = GUI.TextField(new Rect(110, 140, 80, 50), indexValue);
        if (GUI.Button(new Rect(20, 140, 80, 50), "指定插入"))
        {
            _singleList.Insert(int.Parse(indexValue), insertValue);
            indexValue = "";
        }

        if (GUI.Button(new Rect(20, 240, 80, 50), "获取"))
        {
            string s = _singleList[int.Parse(indexValue)];
            Debug.LogError(s);
            indexValue = "";
        }

        //indexValue = GUI.TextField(new Rect(110, 340, 80, 50), indexValue);
        if (GUI.Button(new Rect(20, 340, 80, 50), "移除"))
        {
            _singleList.RemoveAt(int.Parse(indexValue));
            indexValue = "";
        }

        if (GUI.Button(new Rect(20, 440, 80, 50), "移除元素"))
        {
            _cList.Delete(insertValue);
            indexValue = "";
        }

        if (GUI.Button(new Rect(110, 440, 80, 50), "尾插"))
        {
            _cList.Add(insertValue);
            indexValue = "";
        }

        if (GUI.Button(new Rect(400, 140, 80, 50), "打印"))
        {
            _cList.LogList();
        }
    }
Exemplo n.º 7
0
        public void Delete()
        {
            var students = new Student[]
            {
                new Student {
                    No = 1, Name = "李1", Score = 22.1
                },
                new Student {
                    No = 2, Name = "李2", Score = 32.3
                },
                new Student {
                    No = 3, Name = "李3", Score = 42.5
                }
            };

            var circularLinkedList = new CircularLinkedList <Student>();

            foreach (var student in students)
            {
                circularLinkedList.TailInsert(new Node <Student>(student));
            }

            circularLinkedList.Delete(2);
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            var list = new Model.Linked_List <int>();

            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);

            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            list.Remove(4);
            list.Remove(1);
            list.Remove(9);

            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            list.AppendHead(14);
            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            //Console.ReadLine();
            //Двусвязный список
            Console.WriteLine("Добавление данных в список");
            var duplexlist = new DuplexLinkedList <int>();

            duplexlist.Add(44);
            duplexlist.Add(45);
            duplexlist.Add(46);
            duplexlist.Add(47);
            duplexlist.Add(48);

            foreach (var item in duplexlist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("Element deleted");
            duplexlist.Delete(47);
            foreach (var item in duplexlist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("List reverse");
            var reverse = duplexlist.Reverse();

            foreach (var item in reverse)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("Кольцевой список");
            var circulatedlinkedlist = new CircularLinkedList <int>();

            circulatedlinkedlist.Add(62);
            circulatedlinkedlist.Add(63);
            circulatedlinkedlist.Add(64);
            circulatedlinkedlist.Add(65);
            circulatedlinkedlist.Add(66);

            foreach (var item in circulatedlinkedlist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("Element deleted");
            circulatedlinkedlist.Delete(66);
            circulatedlinkedlist.Delete(62);

            foreach (var item in circulatedlinkedlist)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();
        }
Exemplo n.º 9
0
        public void DisplayLinkedList()
        {
            Console.WriteLine("Select Question[1-18]");
            int choice = int.Parse(Console.ReadLine());

            switch (choice)
            {
                #region Single Linked List
            case 1:

                Console.WriteLine("--------1.Single Linked List--------");
                LinkedList <int> list = new LinkedList <int>();
                for (int i = 1; i <= 5; i++)
                {
                    list.Prepend(i);
                }
                list.InsertAfter(6, 5);
                list.InsertBefore(7, 3);
                list.PrintList();
                Console.WriteLine($"\nLength of List before delete {list.NodeCount()}");
                list.DelteNode(6);
                list.PrintList();
                Console.WriteLine($"\nLength of List after delete {list.NodeCount()}");

                LinkedList <string> list1 = new LinkedList <string>();
                string[]            str   = { "A", "B", "C", "D", "E" };
                foreach (var v in str)
                {
                    list1.Append(v);
                }
                list1.PrintList();
                list1.SearchNode("D");
                break;
                #endregion

                #region Double Linked List
            case 2:
                Console.WriteLine("--------2.Doubly Linked List--------");
                DoublyLinkedList <int> dlist = new DoublyLinkedList <int>();
                dlist.Append(40);
                dlist.Prepend(10);
                dlist.InsertAtMiddle(60, 1);
                dlist.InsertAtMiddle(70, 3);
                dlist.PrintList();
                dlist.Delete(3);
                dlist.NodeSearch(40);
                dlist.NodeCount();
                dlist.PrintList();
                break;

                #endregion

                #region Circular Linked List
            case 3:
                Console.WriteLine("--------3.Circular Linked List--------");
                CircularLinkedList <string> clist = new CircularLinkedList <string>();
                clist.Prepend("A");
                clist.Append("B");
                clist.Prepend("C");
                clist.Append("D");
                clist.InsertAt("E", 4);
                clist.NodeSearch("A");
                clist.PrintList();
                clist.NodeCount();
                clist.Delete("E");
                clist.PrintList();
                break;
                #endregion

                #region Detect loop Using HasSet
            case 4:
                Console.WriteLine("--------4.Detect loop Using HasSet--------");
                DetectLoopInLinkedListUsingHasSet <int> lop1 = new DetectLoopInLinkedListUsingHasSet <int>();
                lop1.Push(10);
                lop1.Push(20);
                lop1.Push(30);
                lop1.Push(40);
                lop1.Push(50);
                /*Create loop for testing */
                lop1.head.next.next.next.next = lop1.head;
                lop1.DetectLoop();
                break;
                #endregion

                #region Detect Loop With Brute Force Approach
            case 5:
                Console.WriteLine("--------5.Detect loop Using Brute Force Approach--------");
                DetectLoopInLinkedListUsingBF <string> lop2 = new DetectLoopInLinkedListUsingBF <string>();
                lop2.Insert("A");
                lop2.Insert("B");
                lop2.Insert("C");
                lop2.Insert("D");
                lop2.Insert("E");
                /*Create loop for testing */
                lop2.head.next.next.next = lop2.head;
                Console.WriteLine(lop2.DetectLoop());
                break;
                #endregion

                #region Detect Loop Using  Floyd’s Cycle
            case 6:
                Console.WriteLine("--------6.Detect loop Using Floyd’s Cycle--------");
                DetectLoopInLinkedListUsing_FloydCycle <int> lop3 = new DetectLoopInLinkedListUsing_FloydCycle <int>();
                lop3.push(40);
                lop3.push(30);
                lop3.push(20);
                lop3.push(10);
                /*Create loop for testing */
                lop3.head.next.next.next.next = lop3.head;
                lop3.DetectLoop();
                break;
                #endregion

                #region Palindrome Check Of Linked List Using Stack
            case 7:
                Console.WriteLine("--------7.Palindrome Check Of Linked List Using Stack--------");
                CheckLinkedListPalindromeUsingStack <int> pal1 = new CheckLinkedListPalindromeUsingStack <int>();
                pal1.Push(40);
                pal1.Push(30);
                pal1.Push(20);
                pal1.Push(30);
                pal1.Push(40);
                pal1.Print();
                pal1.CheckPalindrome();
                break;
                #endregion

                #region Reverse LinkedList
            case 8:
                Console.WriteLine("--------8.Reverse LinkedList--------");
                ReverseLinkedList <char> rev = new ReverseLinkedList <char>();
                char[] val = { 'a', 'b', 'c' };
                for (int i = 0; i < val.Length; i++)
                {
                    rev.Push(val[i]);
                }
                rev.PrintList();
                rev.ReverseList();
                Console.WriteLine("After Reverse");
                rev.PrintList();
                break;
                #endregion

                #region Reverse Linked List Using Recursion
            case 9:
                Console.WriteLine("--------9.Reverse Linked List Using Recursion--------");
                ReverseLinkedListUsingRecursion rev2 = new ReverseLinkedListUsingRecursion();
                rev2.Append(10);
                rev2.Append(20);
                rev2.Append(30);
                rev2.Print();
                rev2.Reverse();
                rev2.Print();
                break;
                #endregion

                #region Remove Duplicate From Sorted LinkedList
            case 10:
                Console.WriteLine("--------10.Remove Duplicate From Sorted LinkedList--------");
                RemoveDuplicateFromSortedLinkedList dct = new RemoveDuplicateFromSortedLinkedList();
                int[] arr = { 10, 10, 20, 30, 30, 40 };
                foreach (var i in arr)
                {
                    dct.Insert(i);
                }
                dct.Print();
                dct.RemoveDuplicate();
                dct.Print();
                break;
                #endregion

                #region Removing Duplicate From Unsorted LinkedList using Hashing
            case 11:
                Console.WriteLine("--------11.Removing Duplicate From Unsorted LinkedList using Hashing--------");
                RemovingDuplicateFromUnsortedLinkedList dct1 = new RemovingDuplicateFromUnsortedLinkedList();
                int[] lst = { 10, 30, 20, 30, 50, 10 };
                foreach (var i in lst)
                {
                    dct1.Push(i);
                }
                dct1.Print();
                dct1.RemoveDuplicate();
                dct1.Print();
                break;
                #endregion

                #region Print LinkedList From End
            case 12:
                Console.WriteLine("--------12.Print LinkedList From End--------");
                PrintLinkedListFromEnd p = new PrintLinkedListFromEnd();
                p.Print();
                break;
                #endregion

                #region Swap nodes in a linked list
            case 13:
                Console.WriteLine("--------13.Swap nodes in a linked list--------");
                SwapNodesInLinkedlist swa = new SwapNodesInLinkedlist();
                int[] ar13 = { 10, 12, 15, 16, 18, 20 };
                foreach (var v in ar13)
                {
                    swa.Push(v);
                }
                swa.PrintUsingRecursion(swa.head);
                Console.WriteLine();
                swa.Swap(12, 18);
                swa.Print();
                break;
                #endregion

                #region Reverse Double Linked List
            case 14:
                Console.WriteLine("--------14.Reverse Double Linked List--------");
                ReverseDoubleLinkedList rd = new ReverseDoubleLinkedList();
                int[] ar14 = { 10, 20, 30, 40 };
                foreach (var v in ar14)
                {
                    rd.Insert(v);
                }
                rd.Print();
                rd.Reverse();
                break;
                #endregion

                #region Reverse Pair Wise
            case 15:
                Console.WriteLine("--------15.Reverse Pair Wise--------");
                ReverseLinkedListPairWise l15 = new ReverseLinkedListPairWise();
                int[] ar15 = { 10, 20, 30, 40, 50 };
                foreach (var v in ar15)
                {
                    l15.Push(v);
                }
                l15.Print();
                l15.Reverse();
                l15.Print();
                break;
                #endregion

                #region Split circular linked List in 2 halfs
            case 16:
                Console.WriteLine("--------16.Split circular linked List in 2 halfs--------");
                SplitCircularLinkedList_inTwoParts o16 = new SplitCircularLinkedList_inTwoParts();
                int[] ar16 = { 50, 60, 20, 30, 13, 40, 56, 73, 10 };
                foreach (var v in ar16)
                {
                    o16.push(v);
                }
                o16.head.next.next.next.next.next.next.next.next.next = o16.head;
                o16.Print(o16.head);
                o16.SplitList(o16.head);
                o16.Print(o16.head1);
                o16.Print(o16.head2);
                break;
                #endregion

                #region Merge two Sorted Linked list
            case 17:
                Console.WriteLine("--------17.Merge two Sorted Linked list--------");
                Merge2SortedLinkedList l17 = new Merge2SortedLinkedList();
                l17.CreateList1();
                l17.CreateList2();
                l17.Print(l17.h1);
                l17.Print(l17.h2);
                l17.MegeList(l17.h1, l17.h2);
                l17.Print(l17.head);
                break;
                #endregion

                #region Plindrome check using Single linked list
            case 18:
                Console.WriteLine("--------" + choice + ".Merge two Sorted Linked list--------");
                CheckLinkedLisPalindromeUsingSingleLinkedList <int> l18 = new CheckLinkedLisPalindromeUsingSingleLinkedList <int>();
                l18.InsertFirst(1);
                l18.InsertFirst(2);
                l18.InsertFirst(2);
                l18.InsertFirst(1);
                l18.Print();
                l18.CheckPalindrome();
                break;
                #endregion

            default:
                Console.WriteLine("Oops! Invalid Choice.");
                break;
            }
        }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            // --------------------------------------------------------
            // -- Двусвязный список

            var duplexList = new DuplexLinkedList <int>();

            duplexList.Add(1);
            duplexList.Add(2);
            duplexList.Add(3);
            duplexList.Add(4);
            duplexList.Add(5);
            duplexList.Add(6);
            duplexList.Add(7);

            Console.WriteLine("Duplex List");
            foreach (var item in duplexList)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine("\n");


            duplexList.Delete(4);


            Console.WriteLine("Duplex List");
            foreach (var item in duplexList)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine("\n");

            var reverse = duplexList.Reverse();

            Console.WriteLine("Reverse");
            foreach (var item in reverse)
            {
                Console.Write(item + " ");
            }

            //----------------------------------------
            // Кольцевой лист
            Console.WriteLine("\nCircualr list");
            var circularList = new CircularLinkedList <int>();

            circularList.Add(1);
            circularList.Add(2);
            circularList.Add(3);
            circularList.Add(4);
            circularList.Add(5);

            foreach (var item in circularList)// Show list in terminal
            {
                Console.Write(item + " ");
            }

            circularList.Delete(3);
            Console.WriteLine();

            foreach (var item in circularList)
            {
                Console.Write(item + " ");
            }

            Console.ReadLine();
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            var circularList = new CircularLinkedList <int>();

            circularList.Add(1);
            circularList.Add(2);
            circularList.Add(3);
            circularList.Add(4);
            circularList.Add(5);

            foreach (var item in circularList)
            {
                Console.WriteLine(item);
            }

            circularList.Delete(3);
            foreach (var item in circularList)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();

            var duplexList = new DuplexLinkedList <int>();

            duplexList.Add(1);
            duplexList.Add(2);
            duplexList.Add(3);
            duplexList.Add(4);
            duplexList.Add(5);

            foreach (var item in duplexList)
            {
                Console.WriteLine(item);
            }

            duplexList.Delete(3);
            foreach (var item in duplexList)
            {
                Console.WriteLine(item);
            }

            var reverse = duplexList.Reverse();

            foreach (var item in reverse)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();

            var list = new Model.LinkefList <int>();

            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);
            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            list.Delete(3);
            list.Delete(1);
            list.Delete(7);
            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            list.AppendHead(7);
            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            list.InsertAfter(4, 8);
            foreach (var item in list)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();



            Console.ReadLine();
        }