class Stack(): def __init__(self, node=None): self._list = DLL() if node != None: self.push(node) def size(self): return self._list.size() def isEmpty(self): return self.size() == 0 def push(self, node): self._list.addLast(node) def pop(self): if self.isEmpty(): raise Exception('stack is empty') return self._list.removeLast() def peek(self): if self.isEmpty(): raise Exception('stack is empty') return self._list.peekLast()
class Queue(): def __init__(self, node=None): self._list = DLL() if node != None: self.enqueue(node) def size(self): return self._list.size() def isEmpty(self): return self._list.size() == 0 def peek(self): if self.isEmpty(): raise Exception('queue is empty') return self._list.peekFirst() def enqueue(self, node): self._list.addLast(node) def dequeue(self): if self.isEmpty(): raise Exception('queue is empty') return self._list.removeFirst()