Esempio n. 1
0
 def test_prepend(self):
     ll = LinkedList()
     ll.prepend(1)
     self.assertEqual([1], ll.to_list())
     ll.prepend(2)
     self.assertEqual([2, 1], ll.to_list())
     ll.prepend(3)
     self.assertEqual([3, 2, 1], ll.to_list())
Esempio n. 2
0
 def test_insert(self):
     ll = LinkedList()
     ll.insert(1, 0)
     self.assertEqual(1, ll.head.value)
     ll.insert(2, 1)
     self.assertEqual(2, ll.head.next.value)
     ll.insert(3, 2)
     self.assertEqual(3, ll.head.next.next.value)
Esempio n. 3
0
    def test_merge_sorted(self):
        ll1 = from_array_list([1, 3, 5, 7, 9])
        ll2 = from_array_list([1, 4, 6, 8])

        head = merge_sorted(ll1.head, ll2.head)
        ll = LinkedList()
        ll.head = head

        self.assertEqual([1, 1, 3, 4, 5, 6, 7, 8, 9], ll.to_list())
Esempio n. 4
0
    def test_get(self):
        ll = LinkedList()
        ll.append(1)
        ll.append(2)
        ll.append(3)

        self.assertEqual(1, ll.get(0).value)
        self.assertEqual(2, ll.get(1).value)
        self.assertEqual(3, ll.get(2).value)
        self.assertEqual(None, ll.get(3))
Esempio n. 5
0
def simple_list(n):
    """
    Generates simple linked lists with numbers from 0 to n.

    Time complexity: O(n)
    Space complexity: O(n)
    """
    ll = LinkedList()
    for i in range(n - 1, -1, -1):
        ll.prepend(i)
    return ll
Esempio n. 6
0
    def test_insertsorted(self):
        ll = from_array_list([1, 2, 3, 5, 6, 7])
        insert_sorted(ll, 4)
        self.assertEqual([1, 2, 3, 4, 5, 6, 7], ll.to_list())

        ll = from_array_list([1, 2, 3])
        insert_sorted(ll, 4)
        self.assertEqual([1, 2, 3, 4], ll.to_list())

        ll = LinkedList()
        insert_sorted(ll, 1)
        self.assertEqual([1], ll.to_list())
Esempio n. 7
0
    def test_has_cycle_list(self):
        for method in self.methods:
            ll = LinkedList()
            self.assertFalse(method(ll.head), method.__name__)

            ll = simple_list(LIST_SIZE)
            self.assertFalse(method(ll.head), method.__name__)

            cll = cycle_list(LIST_SIZE)
            self.assertTrue(method(cll.head), method.__name__)

            rcll = random_cycle_list(LIST_SIZE)
            self.assertTrue(method(rcll.head), method.__name__)
Esempio n. 8
0
    def test_delete(self):
        ll = LinkedList()
        ll.append(1)
        ll.append(2)
        ll.append(3)
        ll.append(4)

        ll.delete(0)
        self.assertEqual([2, 3, 4], ll.to_list())

        ll.delete(1)
        self.assertEqual([2, 4], ll.to_list())

        ll.delete(1)
        self.assertEqual([2], ll.to_list())

        ll.delete(0)
        self.assertEqual([], ll.to_list())
Esempio n. 9
0
 def __init__(self):
     self._main_stack = LinkedList()
     self._max_stack = LinkedList()
     self._map = {}
Esempio n. 10
0
    def test_find_loop_lengt(self):
        ll = cycle_list(LIST_SIZE)
        self.assertEqual(LIST_SIZE, find_cycle_length(ll.head))

        ll = LinkedList()
        self.assertEqual(0, find_cycle_length(ll.head))
Esempio n. 11
0
 def test_to_list(self):
     ll = LinkedList()
     ll.head = Node(1)
     ll.head.next = Node(2)
     ll.head.next.next = Node(3)
     self.assertEqual([1, 2, 3], ll.to_list())
Esempio n. 12
0
def breadth_first_traversal(tr_queue, level, build_str):
    """Print a graphical depiction of the tree using breadth first traversal."""
    if len(tr_queue) == 0:
        return

    root = tr_queue.popleft()
    build_str = build_str + "{0:4d}".format(root.data)

    if root.data == 2**level - 1:  # reached a new level of tree
        print_str = "{: ^50}\n".format(build_str)
        build_str = ""
        print(print_str)
        level = level + 1

    if root.left:
        tr_queue.append(root.left)
    if root.right:
        tr_queue.append(root.right)

    breadth_first_traversal(tr_queue, level, build_str)


if __name__ == "__main__":
    """Generate linked list, convert to binary tree."""
    l_list = build_linked_list(24, 1, LinkedList())
    bin_tree = build_tree_from_linked_list(l_list.head)

    queue = deque()
    queue.append(bin_tree.root)
    breadth_first_traversal(queue, 1, "")
Esempio n. 13
0
 def test_last(self):
     ll = LinkedList()
     ll.head = Node(1)
     ll.head.next = Node(2)
     ll.head.next.next = Node(3)
     self.assertEqual(3, ll.length())
Esempio n. 14
0
 def test_append(self):
     ll = LinkedList()
     ll.append(1)
     self.assertEqual([1], ll.to_list())
     ll.append(2)
     self.assertEqual([1, 2], ll.to_list())
Esempio n. 15
0
 def test_constructor(self):
     ll = LinkedList()
     self.assertEqual(ll.head, None)
Esempio n. 16
0
 def setUp(self):
     self.al = LinkedList()
Esempio n. 17
0
 def __init__(self):
     self.ll = LinkedList()