class Queue(object): '''Stack is a composition of LinkedList''' def __init__(self, input=None): self.queue = DoubleLinkedList(input) def enqueue(self, val): self.queue.insert(val) def dequeue(self): shift_val = self.queue.shift() return shift_val def size(self): return self.queue._size() def peek(self): return self.queue.tail.data
class Deque(object): '''Deque is a composition of Double Linked List''' def __init__(self, input=None): '''create doubly linked list''' self.deque = DoubleLinkedList(input) def append(self, val): self.deque.append(val) def append_left(self, val): self.deque.insert(val) def pop(self): return self.deque.pop() def pop_left(self): return self.deque.shift() def peek(self): try: return self.deque.head.data except AttributeError: return None def peek_left(self): try: return self.deque.tail.data except AttributeError: return None def size(self): size = 0 current_spot = self.deque.head while current_spot: size += 1 current_spot = current_spot.toward_tail return size
def test_insert_str(): from double_linked import DoubleLinkedList new_list = DoubleLinkedList((4, 5, 65)) new_list.insert('dog') assert new_list.head.data == 'dog'
def test_insert_int(): from double_linked import DoubleLinkedList new_list = DoubleLinkedList((4, 5, 65)) new_list.insert(45) assert new_list.head.data == 45
def test_empty_double_linked(): from double_linked import DoubleLinkedList new_list = DoubleLinkedList() new_list.insert(999) assert new_list.shift() == 999