Exemple #1
0
        MyLinkedList ReverseLinkedList(MyLinkedList myLinkedList)
        {
            MyLinkedListNode left     = myLinkedList.getFirst();
            MyLinkedListNode right    = myLinkedList.getLast();
            MyLinkedListNode tempNode = null;

            //Shuffle the  right neighbours of left node to point to right.
            left.getNext().setPrevious(right);

            //Shuffle the left of neighbours of right node to point to left.
            right.getPrevious().setNext(left);

            // make sure that the old left neighbor of right node is  now the recent  left neighbour of left node
            // and the old left neighbour of  left node is now  the recent left neighbor of right node
            tempNode = left.getPrevious();
            left.setPrevious(right.getPrevious());
            right.setPrevious(tempNode);

            // make sure that the old right neighbor of right node is  now the recent  right neighbour of left node
            // and the old right neighbour of left node is now  the recent right neighbor of right node
            tempNode = left.getNext();
            left.setNext(right.getNext());
            right.setNext(tempNode);

            //Arrange the first and last node as they are at the edge
            myLinkedList.setFirstNode(right);
            myLinkedList.setLastNode(left);

            //Get the first and last after reversing the left and right edge nodes.
            left  = myLinkedList.getFirst();
            right = myLinkedList.getLast();

            //This is for the remaining inner nodes.
            for (int i = 1; i < myLinkedList.getCount() / 2; i++)
            {
                left = left.getNext();
                if (left == right) //left and right have joined  for even length  of linked list.
                {
                    break;
                }

                right = right.getPrevious();

                if (left == right)//left and right have joined  for odd length  of linked list.
                {
                    break;
                }
                //Shuffle the refences of neighbours of left to point to right.
                if (left.getNext() == right) // left and right about to join
                {
                    left.getPrevious().setNext(right);
                    right.getNext().setPrevious(left);

                    left.setNext(right.getNext());
                    right.setPrevious(left.getPrevious());

                    left.setPrevious(right);
                    right.setNext(left);
                    break;
                }

                left.getNext().setPrevious(right);
                left.getPrevious().setNext(right);
                //Shuffle the refences of neighbours of right to point to left.
                right.getNext().setPrevious(left);
                right.getPrevious().setNext(left);

                // make sure that the old left neighbor of right node is  now the recent  left neighbour of left node
                // and the old left neighbour of  left node is now  the recent left neighbor of right node
                tempNode = left.getPrevious();
                left.setPrevious(right.getPrevious());
                right.setPrevious(tempNode);

                // make sure that the old right neighbor of right node is  now the recent  right neighbour of left node
                // and the old right neighbour of left node is now  the recent right neighbor of right node
                tempNode = left.getNext();
                left.setNext(right.getNext());
                right.setNext(tempNode);

                tempNode = left;
                left     = right;
                right    = tempNode;
            }
            return(myLinkedList);
        }
Exemple #2
0
        /// <summary>
        /// Driver method.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            var applicationUnderTest = new Program();
            var result = applicationUnderTest.CreatePair(new[] { 1, 3, 5, 7, 0, 90 });

            Console.WriteLine("Content of the Pair object after getting created");
            foreach (var resultItem in result)
            {
                Console.WriteLine(resultItem);
            }
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            var inputArray = new[] { 1, 3, 5, 7, 0, 90 };

            Console.WriteLine("Before Calling Reverse Array");
            Console.WriteLine("-----------------------------");
            foreach (var item in inputArray)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            var resultArray = applicationUnderTest.ReverseArray(new[] { 1, 3, 5, 7, 0, 90 });

            Console.WriteLine("After  Calling Reverse Array");
            Console.WriteLine("-----------------------------");
            foreach (var item in resultArray)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            var array1 = new[] { -5, 6, 3, -2, 10, -12, 20, 11 };
            var array2 = new[] { 7, 20, 9, -5, 2, 14, 3 };

            Console.WriteLine("Content of  Array1");
            Console.WriteLine("-----------------------------");
            foreach (var item in array1)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            Console.WriteLine("Content of  Array2");
            Console.WriteLine("-----------------------------");
            foreach (var item in array2)
            {
                Console.Write(item + " ");
            }

            Console.WriteLine();
            var resultUnion = applicationUnderTest.FindIntersection(array1, array2);

            Console.WriteLine("Intersection  of Array1 and Array2");
            Console.WriteLine("-----------------------------");
            foreach (var item in resultUnion)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            var nonUniqueValues = new [] { 7, 10, 10, 12, 15, 17, 17, 17, 17, 20, 25, 33, 40, 40, 40, 45, 45, 49 };

            Console.WriteLine("Values of nonUnique Array");
            Console.WriteLine("-----------------------------");
            foreach (var item in nonUniqueValues)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            var resultUniqueValues = applicationUnderTest.RemoveDuplicates(nonUniqueValues);

            Console.WriteLine("Content of  unique result");
            Console.WriteLine("-----------------------------");
            foreach (var item in resultUniqueValues)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();


            var myLinkedList = new MyLinkedList(10);

            myLinkedList.addLast(15);
            myLinkedList.addLast(20);
            myLinkedList.addLast(25);
            myLinkedList.addLast(30);
            myLinkedList.addLast(35);
            myLinkedList.addLast(40);
            // myLinkedList.addLast(45);

            Console.WriteLine("Content of  the linkedlist before reversal ");
            myLinkedList.DisplayAll();

            //Apply Reverse linked list operation.
            var reversedLinkedList = applicationUnderTest.ReverseLinkedList(myLinkedList);

            Console.WriteLine("Content of  the linkedlist after reversal ");
            reversedLinkedList.DisplayAll();
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();


            myLinkedList = new MyLinkedList(10);
            myLinkedList.addLast(103);
            myLinkedList.addLast(20);
            myLinkedList.addLast(88);
            myLinkedList.addLast(30);
            myLinkedList.addLast(99);
            Console.WriteLine("Content of  the linkedlist before applying sorting with ascending order ");
            myLinkedList.DisplayAll();
            Console.WriteLine("Content of  the linkedlist after applying sorting with ascending order ");
            myLinkedList.bubblesortAscending();
            myLinkedList.DisplayAll();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            myLinkedList = new MyLinkedList(10);
            myLinkedList.addLast(103);
            myLinkedList.addLast(20);
            myLinkedList.addLast(88);
            myLinkedList.addLast(30);
            myLinkedList.addLast(99);
            myLinkedList.addLast(40);
            Console.WriteLine("Content of  the linkedlist before applying sorting with descending order ");
            myLinkedList.DisplayAll();
            Console.WriteLine("Content of  the linkedlist after applying sorting with descending order ");
            myLinkedList.bubblesortDescending();
            myLinkedList.DisplayAll();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine();

            myLinkedList = new MyLinkedList(10);
            myLinkedList.addLast(103);
            myLinkedList.addLast(103);
            myLinkedList.addLast(20);
            myLinkedList.addLast(20);
            myLinkedList.addLast(88);
            myLinkedList.addLast(30);
            myLinkedList.addLast(30);
            myLinkedList.addLast(99);
            myLinkedList.addLast(99);
            myLinkedList.addLast(99);
            myLinkedList.addLast(40);
            myLinkedList.addLast(400);
            myLinkedList.bubblesortAscending();
            Console.WriteLine("Content of  sorted  linkedlist before applying Remove duplicate with descending order ");
            myLinkedList.DisplayAll();

            myLinkedList.RemoveDuplicateFromSortedList();

            Console.WriteLine("Content of  the sorted linkedlist after removeing duplicates.");
            myLinkedList.DisplayAll();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine();

            var intStack = new Stack <int>();

            intStack.Push(103);
            intStack.Push(100);
            intStack.Push(20);
            intStack.Push(55);
            intStack.Push(88);
            intStack.Push(31);
            intStack.Push(30);
            intStack.Push(29);
            intStack.Push(79);
            intStack.Push(99);
            intStack.Push(80);
            intStack.Push(400);

            Console.WriteLine("Content of  Stack   before applying Remove last entry:");
            intStack.GetEnumerator();
            var enumerator = intStack.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current + " ");
            }
            Console.WriteLine();

            Console.WriteLine("Content of  Stack   after applying Remove last entry");
            intStack   = applicationUnderTest.RemoveTop(intStack);
            enumerator = intStack.GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current + " ");
            }
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine();

            intStack = new Stack <int>();
            intStack.Push(103);
            intStack.Push(100);
            intStack.Push(20);
            intStack.Push(55);
            intStack.Push(88);
            intStack.Push(31);
            intStack.Push(30);
            intStack.Push(29);
            intStack.Push(79);
            intStack.Push(99);
            intStack.Push(80);
            intStack.Push(400);

            Console.WriteLine("Content of  Stack before Swapping  half of the stack:");
            intStack.GetEnumerator();
            enumerator = intStack.GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current + " ");
            }
            Console.WriteLine();

            Console.WriteLine("Content of Stack after Swapping  half of the stack:");
            intStack   = applicationUnderTest.SwapHalfOfStack(intStack);
            enumerator = intStack.GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current + " ");
            }
            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine();
            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.WriteLine();

            var intQueue = new Queue <int>();

            intQueue.Enqueue(103);
            intQueue.Enqueue(100);
            intQueue.Enqueue(20);
            intQueue.Enqueue(55);
            intQueue.Enqueue(88);
            intQueue.Enqueue(3100);
            intQueue.Enqueue(30);
            intQueue.Enqueue(29);
            intQueue.Enqueue(79);
            intQueue.Enqueue(99);
            intQueue.Enqueue(80);
            intQueue.Enqueue(400);

            Console.WriteLine("Content of  Queue before positioning the max to the front:");
            intQueue.GetEnumerator();
            var enumeratorQueue = intQueue.GetEnumerator();

            while (enumeratorQueue.MoveNext())
            {
                Console.WriteLine(enumeratorQueue.Current + " ");
            }
            Console.WriteLine();

            Console.WriteLine("Content of  Queue after positioning the max to the front:");
            intQueue        = PositionMaxEntryToTheFront(intQueue);
            enumeratorQueue = intQueue.GetEnumerator();
            while (enumeratorQueue.MoveNext())
            {
                Console.WriteLine(enumeratorQueue.Current + " ");
            }
            Console.WriteLine();

            Console.WriteLine("==================================================================================================");
            Console.WriteLine();

            Console.ReadKey();
        }