class Queue: def __init__(self): self.storage = LinkedList() def __str__(self): return f"{self.storage}" def __len__(self): return len(self.storage) def enqueue(self, value): self.storage.add_to_tail(value) def dequeue(self): if len(self.storage) > 0: return self.storage.remove_from_head()
class Queue: def __init__(self): self.size = 0 self.storage = LinkedList() def __len__(self): if self.size >= 0: return self.size else: return 0 def enqueue(self, value): self.storage.add_to(value) self.size += 1 def dequeue(self): if self.size > 0: value = self.storage.remove_from_head() self.size -= 1 return value
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 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_head(value) def pop(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. Additionally when implementing linked lists with stacks, it seems we need to have an additional 'Remove from tail' # method in order to properly pop() in the way that is expected with a stack.
class Stack: def __init__(self): self.size = 0 self.storage = LinkedList() # get stack length/size def __len__(self): return self.size def push(self, value): # add one to size self.size += 1 # add item to top of stack self.storage.add_to_head(value) def pop(self): # if stack empty, can't remove anything if self.size == 0: return None else: # subtract one from size self.size -= 1 # remove from top of stack & return item return self.storage.remove_from_head()
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()