class Stack: def __init__(self): self.size = 0 self.storage = LinkedList() def __len__(self): return self.size def push(self, value): self.size += 1 self.storage.add_to_end(value) def pop(self): if self.size != 0: self.size -= 1 return self.storage.remove_from_tail() else: return None
class Stack: def __init__(self): self.size = 0 self.storage = LinkedList() def __len__(self): return self.size def push(self, value): # self.storage.append(value) self.storage.add_to_end(value) self.size += 1 def pop(self): if not self.storage.head: return None else: self.size -= 1 return self.storage.remove_at_end()
class Queue: def __init__(self): self.size = 0 self.storage = LinkedList() def __len__(self): return self.size def enqueue(self, value): # self.storage.append(value) self.storage.add_to_end(value) self.size += 1 def dequeue(self): # if len(self.storage) != 0: # return self.storage.pop(0) if not self.storage.head: return None else: self.size -= 1 return self.storage.remove_from_head()
class Queue: def __init__(self): self.size = 0 self.storage = LinkedList() def __len__(self): return self.size def enqueue(self, value): self.size += 1 self.storage.add_to_end(value) def dequeue(self): if self.size > 0: self.size -= 1 return self.storage.remove_from_head() # 3. # The difference between linked lists and array methods are that the array methods are already built in parts of the storage list. # We can use these instead of writing out our own in a linked list class, and we can reference indeces of the array whereas in linked # lists we cannot.
class Queue: def __init__(self): self.size = 0 self.storage = LinkedList() # return queue size/length def __len__(self): return self.size def enqueue(self, value): # add one to queue size/length self.size += 1 # add item to end of queue self.storage.add_to_end(value) def dequeue(self): # if queue empty, can't remove if self.size == 0: return None else: # remove one from queue size/length self.size -= 1 # remove one item from top of queue return self.storage.remove_from_head()