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
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
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()
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)
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
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
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
def __init__(self): """Constructor for Queue.""" self.linked_list = DLinkedList()
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)
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)
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()