Ejemplo n.º 1
0
 def test_merge_two_sorted_lists(self):
     head = merge_k_lists(
         [generate_linked_list([1, 4, 5]).get_head(),
          generate_linked_list([1, 3, 4]).get_head(),
          generate_linked_list([2, 6]).get_head()])
     result = LinkedList(head=head)
     self.assertListEqual([1, 1, 2, 3, 4, 4, 5, 6], result.to_list())
Ejemplo n.º 2
0
 def test_partition_list(self):
     linked_list_1 = generate_linked_list([2, 4, 3])
     linked_list_2 = generate_linked_list([5, 6, 4])
     head = add_two_numbers(linked_list_1.get_head(),
                            linked_list_2.get_head())
     linked_list_3 = LinkedList(singly=True, head=head)
     self.assertListEqual([7, 0, 8], linked_list_3.to_list())
Ejemplo n.º 3
0
 def assert_operation(val_list, pos=-1):
     linked_list = generate_linked_list(val_list)
     if pos >= 0:
         linked_list.at(len(val_list) - 1).next = linked_list.at(pos)
         self.assertTrue(has_cycle(linked_list.get_head()))
     else:
         self.assertFalse(has_cycle(linked_list.get_head()))
Ejemplo n.º 4
0
 def assert_operation(val_list, pos=-1):
     linked_list = generate_linked_list(val_list)
     if pos >= 0:
         linked_list.at(len(val_list) - 1).next = linked_list.at(pos)
         self.assertEqual(linked_list.at(pos),
                          detect_cycle(linked_list.get_head()))
     else:
         self.assertEqual(None, detect_cycle(linked_list.get_head()))
    def test_remove_nth_from_end_of_list(self):
        linked_list = generate_linked_list([1, 2, 3, 4, 5])

        head = remove_nth_from_end(linked_list.get_head(), 2)
        linked_list.set_head(head)
        self.assertListEqual([1, 2, 3, 5], linked_list.to_list())

        head = remove_nth_from_end(linked_list.get_head(), 1)
        linked_list.set_head(head)
        self.assertListEqual([1, 2, 3], linked_list.to_list())

        head = remove_nth_from_end(linked_list.get_head(), 3)
        linked_list.set_head(head)
        self.assertListEqual([2, 3], linked_list.to_list())
 def assert_operation(in_list, val, out_list):
     linked_list = generate_linked_list(in_list)
     head = remove_elements(linked_list.get_head(), val)
     linked_list.set_head(head)
     self.assertListEqual(out_list, linked_list.to_list())
Ejemplo n.º 7
0
 def assert_operation(in_list, out_list):
     linked_list = generate_linked_list(in_list)
     reorder_list(linked_list.get_head())
     self.assertListEqual(out_list, linked_list.to_list())
Ejemplo n.º 8
0
 def test_reverse_linked_list_ii(self):
     linked_list = generate_linked_list([1, 2, 3, 4, 5])
     head = reverse_between(linked_list.get_head(), 2, 4)
     linked_list.set_head(head)
     self.assertListEqual([1, 4, 3, 2, 5], linked_list.to_list())
Ejemplo n.º 9
0
 def assert_operation(in_list, k, out_list):
     linked_list = generate_linked_list(in_list)
     head = rotate_right(linked_list.get_head(), k)
     linked_list.set_head(head)
     self.assertListEqual(out_list, linked_list.to_list())
Ejemplo n.º 10
0
 def test_merge_two_sorted_lists(self):
     l1 = generate_linked_list([1, 2, 4])
     l2 = generate_linked_list([1, 3, 4])
     head = merge_two_lists(l1.get_head(), l2.get_head())
     l3 = LinkedList(head=head)
     self.assertListEqual([1, 1, 2, 3, 4, 4], l3.to_list())
Ejemplo n.º 11
0
 def assert_operation(in_list, result):
     linked_list = generate_linked_list(in_list)
     if result:
         self.assertTrue(is_palindrome(linked_list.get_head()))
     else:
         self.assertFalse(is_palindrome(linked_list.get_head()))
Ejemplo n.º 12
0
 def assert_operation(in_list, out_list):
     linked_list = generate_linked_list(in_list)
     head = insertion_sort_list(linked_list.get_head())
     linked_list.set_head(head)
     self.assertListEqual(out_list, linked_list.to_list())
Ejemplo n.º 13
0
 def test_reverse_linked_list_recursive(self):
     linked_list = generate_linked_list([1, 2, 3, 4, 5])
     head = reverse_list_recursive(linked_list.get_head())
     linked_list.set_head(head)
     self.assertListEqual([5, 4, 3, 2, 1], linked_list.to_list())