Beispiel #1
0
        public void TestAddLinkedList()
        {
            ListNode x = new ListNode(2);

            x.next      = new ListNode(4);
            x.next.next = new ListNode(3);

            ListNode y = new ListNode(5);

            y.next      = new ListNode(6);
            y.next.next = new ListNode(4);

            var answer = AddTwoNumbersLinkedList.AddTwoNumbers(x, y);
        }
        static void Main(string[] args)
        {
            //******************Reverse a String*********************
            //Console.WriteLine(ReverseString.Reverse("My Name is Andy"));
            //Console.WriteLine(ReverseString.Reverse("My Name is Miles"));

            //******************** Merge 2 Sorted Array*********************
            //int[] result = MergeSortedArrays.MergeArrays(new int[] { 1, 4, 9, 13,16,17,18,19,20 }, new int[] { 0, 2, 3, 10, 15,20});
            //foreach (var item in result)
            //    Console.Write($"{item},  ");

            //********************Find Second Largest Element in an Array**********************
            //int result = SecondLargestElementArray.FindSecondLargestElementArray(new int[] { -3, 1, 5, 10, 3, 7, 3, 8, 9 });
            //Console.WriteLine($"Second Largest Element in an Array is: {result}");

            //*****************LinkedList Implementation*********************
            //SinglyLinkedList<int> myLinkedList = new SinglyLinkedList<int>(10);
            //myLinkedList.Prepend(10);
            //myLinkedList.Append(20);
            //myLinkedList.Append(30);
            //myLinkedList.Append(40);
            //myLinkedList.InsertAt(0, 5);
            //myLinkedList.InsertAt(3, 35);
            //myLinkedList.InsertAt(6, 55);
            //myLinkedList.InsertAt(7, 90);
            //myLinkedList.TraverseToIndex(0);
            //myLinkedList.TraverseToIndex(1);
            //myLinkedList.TraverseToIndex(2);
            //myLinkedList.TraverseToIndex(3);
            //myLinkedList.TraverseToIndex(4);
            //myLinkedList.TraverseToIndex(5);
            //myLinkedList.TraverseToIndex(6);
            //myLinkedList.TraverseToIndex(7);
            //myLinkedList.TraverseToIndex(8);
            //myLinkedList.Print();
            //Console.WriteLine($"Length of Linked List is: {myLinkedList.Length}");
            //Console.WriteLine($"Head of Linked List is: {myLinkedList.Head}");
            //Console.WriteLine($"Tail of Linked List is: {myLinkedList.Tail}");

            //myLinkedList.Remove(1);
            //myLinkedList.Print();
            //Console.WriteLine($"Length of Linked List is: {myLinkedList.Length}");
            //Console.WriteLine($"Head of Linked List is: {myLinkedList.Head}");
            //Console.WriteLine($"Tail of Linked List is: {myLinkedList.Tail}");

            //myLinkedList.Remove(2);
            //myLinkedList.Print();
            //Console.WriteLine($"Length of Linked List is: {myLinkedList.Length}");
            //Console.WriteLine($"Head of Linked List is: {myLinkedList.Head}");
            //Console.WriteLine($"Tail of Linked List is: {myLinkedList.Tail}");

            //myLinkedList.Remove(0);
            //myLinkedList.Print();
            //Console.WriteLine($"Length of Linked List is: {myLinkedList.Length}");
            //Console.WriteLine($"Head of Linked List is: {myLinkedList.Head}");
            //Console.WriteLine($"Tail of Linked List is: {myLinkedList.Tail}");

            //myLinkedList.Remove(myLinkedList.Length-1);
            //myLinkedList.Print();
            //Console.WriteLine($"Length of Linked List is: {myLinkedList.Length}");
            //Console.WriteLine($"Head of Linked List is: {myLinkedList.Head}");
            //Console.WriteLine($"Tail of Linked List is: {myLinkedList.Tail}");

            //*********************Doubly Linked List Implementation*************************
            //DoublyLinkedList<int> doublyLinkedList = new DoublyLinkedList<int>(10);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Append(20);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Prepend(5);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Append(30);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Prepend(4);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Append(40);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Prepend(3);
            //Console.WriteLine($"Length of Linked List: {doublyLinkedList.Length}. Head Node: {doublyLinkedList.Head}. Tail Node: {doublyLinkedList.Tail}");
            //doublyLinkedList.Print();

            //doublyLinkedList.Remove(3);
            //doublyLinkedList.Print();
            //doublyLinkedList.Remove(0);
            //doublyLinkedList.Print();
            //doublyLinkedList.Remove(doublyLinkedList.Length - 1);
            //doublyLinkedList.Print();
            //doublyLinkedList.Remove(2);
            //doublyLinkedList.Print();

            //doublyLinkedList.InsertAt(2, 20);
            //doublyLinkedList.Print();
            //doublyLinkedList.InsertAt(2, 10);
            //doublyLinkedList.Print();
            //doublyLinkedList.InsertAt(2, 7);
            //doublyLinkedList.Print();
            //doublyLinkedList.InsertAt(0, 3);
            //doublyLinkedList.Print();
            //doublyLinkedList.InsertAt(7, 40);
            //doublyLinkedList.Print();

            //************Reverse A LinkedList*********************

            //SinglyLinkedList<int> singlyLinkedList = new SinglyLinkedList<int>(10);
            //singlyLinkedList.Append(20);
            //singlyLinkedList.Append(30);
            //singlyLinkedList.Append(40);
            //singlyLinkedList.Append(50);

            //var reversedLinkedList = ReverseLinkedList.ReverseLinkList(singlyLinkedList);
            //reversedLinkedList.Print();
            //Console.WriteLine($"Before Reversing Linked List | Head: {singlyLinkedList.Head}. Tail: {singlyLinkedList.Tail}. Length: {singlyLinkedList.Length}");
            //ReverseLinkedList.ReverseLinkListVer2(singlyLinkedList);
            //singlyLinkedList.Print();
            //Console.WriteLine($"After Reversing Linked List | Head: {singlyLinkedList.Head}. Tail: {singlyLinkedList.Tail}. Length: {singlyLinkedList.Length}");

            //*****************ArrayList Implementation********************
            //MyArrayList.TestMyArrayList();

            //*******************Hash Table Usage********************
            //MyHashTable hashTable = new MyHashTable(2);
            //hashTable.Set("Pineapple", 50);
            //hashTable.Set("Apple", 10);
            //hashTable.Set("Grapes", 90);
            //Console.WriteLine(hashTable.Get("Pineapple"));
            //Console.WriteLine(hashTable.Get("Apple"));
            //Console.WriteLine(hashTable.Get("Grapes"));
            //hashTable.Print();

            //**********First Recurring Character*******************
            //Console.WriteLine(FirstRecurringCharacter.FindFirstRecurringCharacter("YashDhanwantri"));

            //************** Stack Implementation *****************
            //MyStack<int> myStack = new MyStack<int>();
            //myStack.Push(10);
            //Console.WriteLine($"Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Push(20);
            //Console.WriteLine($"Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Push(30);
            //Console.WriteLine($"Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Push(40);
            //Console.WriteLine($"Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Push(50);
            //Console.WriteLine($"Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Pop();
            //Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Pop();
            //Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Pop();
            //Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Pop();
            //Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //myStack.Pop();
            //try
            //{
            //    myStack.Pop();
            //    Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //}
            //catch(Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}

            //try
            //{
            //    myStack.Pop();
            //    Console.WriteLine($"[POP] Top item: {myStack.Top.Data}. Bottom Item: {myStack.Bottom.Data}. Length: {myStack.Length}");
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}
            //try
            //{
            //    Console.WriteLine($"Peeking top element: {myStack.Peek()}");
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}

            //****************************Queue Implementation**********************************
            //MyQueue<string> myQueue = new MyQueue<string>();
            //myQueue.Enqueue("Person 1");
            //myQueue.Enqueue("Person 2");
            //myQueue.Enqueue("Person 3");
            //myQueue.Enqueue("Person 4");
            //myQueue.Dequeue();
            //myQueue.Dequeue();
            //myQueue.Dequeue();
            //myQueue.Dequeue();
            //myQueue.Dequeue();

            //***********************************Queue Implementation using Stack**************************
            //QueueUsingStack<int> queue = new QueueUsingStack<int>();
            //queue.Enqueue(1);
            //Console.WriteLine($"Enqueued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Enqueue(2);
            //Console.WriteLine($"Enqueued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Enqueue(3);
            //Console.WriteLine($"Enqueued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Enqueue(4);
            //Console.WriteLine($"Enqueued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");

            //queue.Dequeue();
            //Console.WriteLine($"Dequeued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Dequeue();
            //Console.WriteLine($"Dequeued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Enqueue(5);
            //Console.WriteLine($"Enqueued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Dequeue();
            //Console.WriteLine($"Dequeued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Dequeue();
            //Console.WriteLine($"Dequeued Successful!! Peek: {queue.Peek()} First: {queue.First} Last: {queue.Last} Length: {queue.Length}");
            //queue.Dequeue();

            //**************************Binary Search Tree Implementation********************************
            //BinarySearchTree tree = new BinarySearchTree();
            //tree.Insert(9);
            //tree.Insert(4);
            //tree.Insert(6);
            //tree.Insert(20);
            //tree.Insert(170);
            //tree.Insert(15);
            //tree.Insert(1);
            //tree.Insert(13);
            //tree.Insert(19);
            //tree.Insert(80);
            //tree.Insert(200);
            //tree.Traverse(tree.Root);

            //    Console.WriteLine($"Item 15 exists:  {tree.ContainsData(15)}");
            //    Console.WriteLine($"Item 9 exists: {tree.ContainsData(9)}");
            //    Console.WriteLine($"Item 4 exists: {tree.ContainsData(4)}");
            //    Console.WriteLine($"Item 6 exists: {tree.ContainsData(6)}");
            //    Console.WriteLine($"Item 20 exists: {tree.ContainsData(20)}");
            //    Console.WriteLine($"Item 170 exists: {tree.ContainsData(170)}");
            //    Console.WriteLine($"Item 1 exists: {tree.ContainsData(1)}");
            //    Console.WriteLine($"Item 3 exists: {tree.ContainsData(3)}");
            //    Console.WriteLine($"Item 172 exists: {tree.ContainsData(172)}");
            //    Console.WriteLine("Inserts successful");
            //

            //********************Graphs Implementation***********************

            //MyGraph myGraph = new MyGraph();
            //myGraph.AddVertex(0);
            //myGraph.AddVertex(1);
            //myGraph.AddVertex(2);
            //myGraph.AddVertex(3);
            //myGraph.AddVertex(4);
            //myGraph.AddVertex(5);
            //myGraph.AddVertex(6);
            //myGraph.AddEdge(3, 1);
            //myGraph.AddEdge(3, 4);
            //myGraph.AddEdge(4, 2);
            //myGraph.AddEdge(4, 5);
            //myGraph.AddEdge(1, 2);
            //myGraph.AddEdge(1, 0);
            //myGraph.AddEdge(0, 2);
            //myGraph.AddEdge(6, 5);
            //myGraph.showConnections();

            //*********************Recursion Exercises**************************
            //Console.WriteLine(RecursionExercise1.Inception());
            //Console.WriteLine($"Factorial of 5 is: {RecursionExercise1.FactorialWithoutRecursion(6)}");
            //Console.WriteLine($"Factorial of 6 is {RecursionExercise1.Factorial(5)}");

            // ********************Factorial*****************************
            //Console.WriteLine($"Element at given Index is: {RecursionExercise1.FibonacciWithoutRecursion(8)}");
            //Console.WriteLine($"[Recursive] Element at given Index is: {RecursionExercise1.Fibonacci(8)}");

            //*******************Reverse a String using Recursion**************************
            //Console.WriteLine(RecursionExercise1.ReverseString("Kavya"));


            //*********************Bubble Sort*******************************

            //int[] result = BubbleSort.Sort(new int[] {10,2,12,1,9,14,6,5 ,2,10,14});
            //foreach(var item in result)
            //    Console.WriteLine(item);

            //*********************My Sort*******************************

            //int[] result = MySort.Sort(new int[] { 10, 2, 12, 1, 9, 14, 6, 5, 2, 10, 14 });
            //foreach (var item in result)
            //    Console.WriteLine(item);

            //*********************Selection Sort ***************************
            //int[] result = SelectionSort.Sort(new int[] { 10, 2, 12, 1, 9, 14, 6, 5, 2, 10, 14 });
            //foreach (var item in result)
            //    Console.WriteLine(item);

            //**********************Insertion Sort*******************************
            //int[] result = InsertionSort.Sort(new int[] { 10, 2, 12, 1, 9, 14, 6, 5, 2, 10, 14 });
            //foreach (var item in result)
            //    Console.WriteLine(item);

            //*********************Linear Search*********************************
            //int[] input = new int[] { 10, 2, 12, 1, 9, 14, 6, 5, 2, 10, 14 };
            //Console.WriteLine($"Item {99} exists in List: {LinearSearch.FindElement(99, input)}");

            //*********************Binary Search*********************************
            //int[] input = new int[] { 1,2,3,4,5 };
            //Console.WriteLine($"Item 1 exists in List: {BinarySearch.FindElement(1, input)}");
            //Console.WriteLine($"Item 2 exists in List: {BinarySearch.FindElement(2, input)}");
            //Console.WriteLine($"Item 3 exists in List: {BinarySearch.FindElement(3, input)}");
            //Console.WriteLine($"Item 4 exists in List: {BinarySearch.FindElement(4, input)}");
            //Console.WriteLine($"Item 5 exists in List: {BinarySearch.FindElement(5, input)}");
            //Console.WriteLine($"Item 6 exists in List: {BinarySearch.FindElement(6, input)}");

            //**************************** Breadth First Search ****************************
            //BinarySearchTree myTree = new BinarySearchTree();
            //myTree.Insert(9);
            //myTree.Insert(4);
            //myTree.Insert(20);
            //myTree.Insert(1);
            //myTree.Insert(6);
            //myTree.Insert(15);
            //myTree.Insert(170);
            //var result = myTree.BreadthFirstSearch();
            //foreach(var item in result)
            //{
            //    Console.WriteLine(item.Data);
            //}

            //var myQueue = new MyQueue<TreeNode>();

            //myQueue.Enqueue(myTree.Root);

            //var resultRecursive = myTree.BreadthFirstSearchRecursive(myQueue, new List<TreeNode>());

            //Console.WriteLine("Recursive Approach");
            //foreach (var item in resultRecursive)
            //{
            //    Console.WriteLine(item.Data);
            //}

            //****************************Depth First Search*****************************
            //**************************** Breadth First Search ****************************
            //BinarySearchTree myTree = new BinarySearchTree();
            //myTree.Insert(9);
            //myTree.Insert(4);
            //myTree.Insert(20);
            //myTree.Insert(1);
            //myTree.Insert(6);
            //myTree.Insert(15);
            //myTree.Insert(170);
            //Console.WriteLine("DFS In Order");
            //myTree.DepthFirstSortInOrder();
            //Console.WriteLine("DFS Pre Order");
            //myTree.DepthFirstSortPreOrder();
            //Console.WriteLine("DFS Post Order");
            //myTree.DepthFirstSortPostOrder();

            //*************************Challenge AddTwoNumbersLinkedList**************************
            AddTwoNumbersLinkedList challenge = new AddTwoNumbersLinkedList();
            var result = challenge.AddTwoNumbers(new ListNode(1), new ListNode(8));

            Console.Write("[");
            while (result != null)
            {
                Console.Write(result.val);
                result = result.next;
                if (result != null)
                {
                    Console.Write(", ");
                }
            }
            Console.Write("]");
        }