class Queue: def __init__(self): self.__list = LinkedList() self.__rear = Node() self.__front = Node() self.__size = 0 def size(self): return self.__list.size() def is_empty(self): return self.size == 0 def front(self): return self.__front def enqueue(self, elem): e = Node(elem) if self.__list.head() != None: self.__rear.set_next(e) else: self.__list.add_head(e) self.__front = e self.__rear = e def dequeue(self): if self.__list.head() != None: temp = self.__front self.__list.remove_head() self.__front = self.__front.get_next() return temp.get_element() else: print('Queue is empty, cannot remove element!') return 1 def __repr__(self): result = "-> " p = self.__list.head() print(p) if p is not None: while p is not None: result += "%s " % str(p.get_element()) p = p.get_next() return result
class stackADT_linkedlist: def __init__(self): self.storage = LinkedList() #counter will be used to get full size of the list self.counter = 0 def stackPUSH(self, item): '''adds element to stack - initially named push, renamed to prevent confusion when reading world.py''' self.storage.add_head(Node(item)) #increases total counter by 1 self.counter += 1 def pop(self): '''removes element from stack''' #reduces total counter by 1 self.counter -= 1 return self.storage.remove_head() def viewStack(self): '''easy way to view entire contents of stack''' return self.storage def size(self): return self.counter