public void ReverseListTestCase1() { var list = CommonHelpers.GetLinkedListFromArray(new[] { 1, 2, 3, 4, 5 }); var output = ReverseLinkedList.ReverseList(list).ValuesToFlatList(); output.SequenceEqual(new[] { 5, 4, 3, 2, 1 }).Should().BeTrue(); }
public void TestMethod1(int[] head, int[] expected) { // Arrange ReverseLinkedList question = new ReverseLinkedList(); ListNode headNode = null; if (head != null && head.Length > 0) { headNode = new ListNode(head[0]); ListNode node = headNode; for (int i = 1; i < head.Length; i++) { node.next = new ListNode(head[i]); node = node.next; } } // Act ListNode actual = question.ReverseList(headNode); List <int> actualList = null; if (actual != null) { actualList = new List <int>(); while (actual != null) { actualList.Add(actual.val); actual = actual.next; } } // Assert CollectionAssert.AreEqual(expected, actualList?.ToArray()); }
public void ReverseTwoNodeList() { var sol = new ReverseLinkedList(); var two = sol.ReverseList(new ListNode(100, new ListNode(999))); Assert.IsNotNull(two); Assert.AreEqual("999, 100", two.ToString()); }
public void ReverseOneNodeList() { var sol = new ReverseLinkedList(); var one = sol.ReverseList(new ListNode(100)); Assert.IsNotNull(one); Assert.AreEqual("100", one.ToString()); }
public void ReverseListTest() { ReverseLinkedList reverseLinkedList = new ReverseLinkedList(); ListNode l5 = new ListNode(5); ListNode l4 = new ListNode(4, l5); ListNode l3 = new ListNode(3, l4); ListNode l2 = new ListNode(2, l3); ListNode l1 = new ListNode(1, l2); ListNode res = reverseLinkedList.ReverseList(l1); Assert.IsTrue(res.val == 5); }
public void ReverseThreeNodeList() { var sol = new ReverseLinkedList(); var list = sol.ReverseList( new ListNode(100, new ListNode(999, new ListNode(-99)))); Assert.IsNotNull(list); Assert.AreEqual("-99, 999, 100", list.ToString()); }
public void reverseListTest() { ListNode head = TestDataNode; while (head != null) { Console.Write(head.val + " -> "); head = head.next; } Console.WriteLine(); head = TestDataNode; ListNode result = ReverseLinkedList.ReverseList(head); while (result != null) { Console.Write(result.val + " -> "); result = result.next; } }
public void Given_list_When_reverse_Then_return() { ListNode node = new ListNode(1) { next = new ListNode(2) { next = new ListNode(3) { next = new ListNode(4) } } }; var result = ReverseLinkedList.ReverseList(node); Assert.AreEqual(4, result.val); Assert.AreEqual(3, result.next.val); Assert.AreEqual(2, result.next.next.val); Assert.AreEqual(1, result.next.next.next.val); }
public void ReverseEmptyList() { var sol = new ReverseLinkedList(); Assert.IsNull(sol.ReverseList(null)); }
void InternalTest(ListNode head, ListNode expected) { ListNode actual = ReverseLinkedList.ReverseList(head); AssertHelper.AssertListNode(expected, actual); }
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; } }