Exemple #1
0
def test_search_for_remove_tail():
    """Test that size works after a remove has occurred on the tail."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(5)
    test_dlinked_list.push(7)
    test_dlinked_list.push(10)
    test_dlinked_list.remove(10)
    assert test_dlinked_list.size() == 2
Exemple #2
0
def test_search_for_remove_middle():
    """Test that remove is working."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(5)
    test_dlinked_list.push(7)
    test_dlinked_list.push(10)
    test_dlinked_list.remove(7)
    assert test_dlinked_list.size() == 2
Exemple #3
0
class Queue(object):
    """Queue Class which is composed from Linked List."""
    def __init__(self):
        """Constructor for Queue."""
        self.linked_list = DLinkedList()

    def enqueue(self, val):
        """Add new element to end of the queue."""
        new_node = Node(self, val)

        if self.linked_list.head is None:
            self.linked_list.head = new_node
            self.linked_list.tail = new_node
        else:
            self.linked_list.tail.prev_node == new_node
            new_node.next_node = self.linked_list.tail
            self.linked_list.tail == new_node

    def dequeue(self):
        """Remove from the end of the queue."""
        if self.linked_list.head is not None:
            removed_node = self.linked_list.head
            self.linked_list.head.prev_node = self.linked_list.head
            return removed_node.data
        raise IndexError("List is empty")

    def peek(self):
        """Return value of next element in queue."""
        return self.linked_list.head

    def size(self):
        """Define the size method."""
        return self.linked_list.size()
Exemple #4
0
def test_if_shift_needs_no_inputs():
    """Test that an unnecessary parameter will raise a TypeError."""
    import pytest
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(5)
    test_dlinked_list.push(7)
    test_dlinked_list.push(10)
    with pytest.raises(TypeError):
        test_dlinked_list.shift(5)
Exemple #5
0
def test_output_of_shift_exists():
    """Test that the output exists."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(5)
    test_dlinked_list.push(7)
    test_dlinked_list.push(10)
    assert test_dlinked_list.shift() is not None
Exemple #6
0
def test_search_for_appended_not_found():
    """Test that search doesn't find something that isn't there."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.append(5)
    test_dlinked_list.append(7)
    test_dlinked_list.append(10)
    assert test_dlinked_list.search(11) is None
Exemple #7
0
def test_search_not_found():
    """Test that will search for value not in list."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(5)
    test_dlinked_list.push(7)
    test_dlinked_list.push(10)
    assert test_dlinked_list.search(11) is None
Exemple #8
0
 def __init__(self):
     """Constructor for Queue."""
     self.linked_list = DLinkedList()
Exemple #9
0
def test_search_for_appended_found():
    """Test that search finds something if it's there."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.append(20)
    assert test_dlinked_list.search(20)
Exemple #10
0
def test_search_found():
    """Test that push value to list then search for it."""
    from doubly_linked_list import DLinkedList
    test_dlinked_list = DLinkedList()
    test_dlinked_list.push(20)
    assert test_dlinked_list.search(20)
Exemple #11
0
def main():
    mylist = DLinkedList()
    mylist.append(7)
    mylist.push(6)
    mylist.push(1)
    mylist.append(4)
    mylist.insert_after(mylist.get_head().get_next(), 8)
    print("Created DLL is:")
    mylist.print_list()

    print("After the deleting the node")
    mylist.delete_node(mylist.get_head().get_next())
    mylist.print_list()

    print("Reversing a doubly linked list")
    reverse_dll(mylist)
    mylist.print_list()