diff --git a/stacks_queues/linked_list.py b/stacks_queues/linked_list.py index 3cb0aa4..9b4ae7b 100644 --- a/stacks_queues/linked_list.py +++ b/stacks_queues/linked_list.py @@ -1,4 +1,3 @@ - class EmptyListError(Exception): pass @@ -48,7 +47,7 @@ def remove_first(self): def empty(self): - return not self.head + return not self.head # method to find if the linked list contains a node with specified value # returns true if found, false otherwise diff --git a/stacks_queues/queue.py b/stacks_queues/queue.py index d66dab2..98df2d6 100644 --- a/stacks_queues/queue.py +++ b/stacks_queues/queue.py @@ -2,10 +2,10 @@ INITIAL_QUEUE_SIZE = 20 class QueueFullException(Exception): - pass + print("QueueFullException: Queue is full!") class QueueEmptyException(Exception): - pass + print("QueueEmptyException: Queue is empty!") class Queue: @@ -15,7 +15,7 @@ def __init__(self): self.front = -1 self.rear = -1 self.size = 0 - + def enqueue(self, element): """ Adds an element to the Queue @@ -23,34 +23,52 @@ def enqueue(self, element): In the store are occupied returns None """ - pass + if (self.rear + 1) % self.buffer_size == self.front: + raise QueueFullException() + elif self.front == -1: + self.front = 0 + self.rear = 0 + self.store[self.rear] = element + self.size += 1 + else: + self.rear = (self.rear +1) % self.buffer_size + self.store[self.rear] = element + self.size += 1 def dequeue(self): """ Removes and returns an element from the Queue Raises a QueueEmptyException if The Queue is empty. """ - pass + if self.front == -1: + raise QueueEmptyException() + data = self.store[self.front] + self.front = (self.front +1) % self.buffer_size + self.size -= 1 + + return data def front(self): """ Returns an element from the front of the Queue and None if the Queue is empty. Does not remove anything. """ - pass + if self.empty(): + return None + return self.store[self.front] def size(self): """ Returns the number of elements in The Queue """ - pass + return self.size def empty(self): """ Returns True if the Queue is empty And False otherwise. """ - pass + return self.size == 0 def __str__(self): """ Returns the Queue in String form like: @@ -58,4 +76,9 @@ def __str__(self): Starting with the front of the Queue and ending with the rear of the Queue. """ - pass + # return self.store.__str__() + values = [] + for i in range(self.front, self.front + self.size): + i = i % self.buffer_size + values.append(self.store[i]) + return str(values) \ No newline at end of file diff --git a/stacks_queues/stack.py b/stacks_queues/stack.py index 94fb2a6..f11ba48 100644 --- a/stacks_queues/stack.py +++ b/stacks_queues/stack.py @@ -1,7 +1,7 @@ from stacks_queues.linked_list import LinkedList class StackEmptyException(Exception): - pass + print("StackEmptyException: Stack is empty") class Stack: @@ -12,7 +12,7 @@ def push(self, element): """ Adds an element to the top of the Stack. Returns None """ - pass + self.store.add_first(element) def pop(self): """ Removes an element from the top @@ -21,13 +21,15 @@ def pop(self): The Stack is empty. returns None """ - pass + if self.store.empty(): + raise StackEmptyException() + return self.store.remove_first() def empty(self): """ Returns True if the Stack is empty And False otherwise """ - pass + return self.store.empty def __str__(self): """ Returns the Stack in String form like: @@ -35,4 +37,4 @@ def __str__(self): Starting with the top of the Stack and ending with the bottom of the Stack. """ - pass + return self.store.__str__() \ No newline at end of file