class SLLStack(object): def __init__(self): self.size = 0 self._data = SinglyLinkedList() def __len__(self): return self.size def build(self, list_object): if not isinstance(list_object, list): return TypeError('build method only accepts object of type list.') for i in list_object: self._data.add_value(i) self.size += 1 def is_empty(self): return self.size == 0 def push(self, e): self.size += 1 self._data.add_value(e) def pop(self): if self.is_empty(): raise IndexError("Stack is empty") top = self._data.head.value self._data.delete_node(self._data.head) self.size -= 1 return top def top(self): if self.is_empty(): raise IndexError("Stack is empty") return self._data.head.value