def test_shift(): """ Test shift """ l = DoubleLinkedList() with pytest.raises(LookupError): l.shift() for i in range(1, 4): l.append(i) assert l._size == 3 assert l.shift() == 3 assert l.head.value == 1 assert l.tail.value == 2 assert l._size == 2 assert l.shift() == 2 assert l.head.value == 1 assert l.tail.value == 1 assert l._size == 1
def test_shift(): """ Test shift """ l = DoubleLinkedList() with pytest.raises(LookupError): l.shift() for i in range(1,4): l.append(i) assert l._size == 3 assert l.shift() == 3 assert l.head.value == 1 assert l.tail.value == 2 assert l._size == 2 assert l.shift() == 2 assert l.head.value == 1 assert l.tail.value == 1 assert l._size == 1
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_shift(): from double_linked import DoubleLinkedList new_list = DoubleLinkedList(LIST_INPUT) assert new_list.shift() == 6
def test_empty_double_linked(): from double_linked import DoubleLinkedList new_list = DoubleLinkedList() new_list.insert(999) assert new_list.shift() == 999