Last active
July 20, 2021 03:05
-
-
Save Edald123/7038fc885de88a50744e419183ac992e to your computer and use it in GitHub Desktop.
Queue in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from linked_list import Node | |
class Queue: | |
def __init__(self, max_size=None): | |
self.head = None | |
self.tail = None | |
self.max_size = max_size | |
self.size = 0 | |
def enqueue(self, value): | |
if self.has_space(): | |
item_to_add = Node(value) | |
print("Adding " + str(item_to_add.get_value()) + " to the queue!") | |
if self.is_empty(): | |
self.head = item_to_add | |
self.tail = item_to_add | |
else: | |
self.tail.set_next_node(item_to_add) | |
self.tail = item_to_add | |
self.size += 1 | |
else: | |
print("Sorry, no more room!") | |
# Add your dequeue method below: | |
def dequeue(self): | |
if not self.is_empty(): | |
item_to_remove = self.head | |
print("Removing " + str(item_to_remove.get_value()) + " from the queue!") | |
if self.get_size() == 1: | |
self.head = None | |
self.tail = None | |
else: | |
self.head = item_to_remove.get_next_node() | |
self.size -= 1 | |
return item_to_remove.get_value() | |
else: | |
print("This queue is totally empty!") | |
def peek(self): | |
if self.is_empty(): | |
print("Nothing to see here!") | |
else: | |
return self.head.get_value() | |
def get_size(self): | |
return self.size | |
def has_space(self): | |
if self.max_size == None: | |
return True | |
else: | |
return self.max_size > self.get_size() | |
def is_empty(self): | |
return self.size == 0 | |
# Test cases: | |
q = Queue(10) | |
print("The max size of the queue is:", q.max_size) | |
print("The current size of the queue is:", q.get_size()) | |
print("Is the queue empty?", q.is_empty()) | |
print("Does the queue has space?", q.has_space(), "\n") | |
q.enqueue(1) | |
q.enqueue(2) | |
q.enqueue(3) | |
q.enqueue(4) | |
q.enqueue(5) | |
q.enqueue(6) | |
q.enqueue(7) | |
q.enqueue(8) | |
q.enqueue(9) | |
q.enqueue(10) | |
print("\nThe current size of the queue is:", q.get_size()) | |
print("Is the queue empty?", q.is_empty()) | |
print("Does the queue has space?", q.has_space()) | |
print("The first element added was:", q.peek(), "\n") | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
q.dequeue() | |
print("\nThe current size of the queue is:", q.get_size()) | |
print("Is the queue empty?", q.is_empty()) | |
print("Does the queue has space?", q.has_space()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment