From 54ac216efc79ab1d26078333011bd4e5b4774636 Mon Sep 17 00:00:00 2001 From: MrWeast Date: Fri, 1 Dec 2023 10:05:31 -0500 Subject: [PATCH 1/4] update queue.py changed implementation to not use built in python lists. added english comments --- src/python/queue.py | 74 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/src/python/queue.py b/src/python/queue.py index 791d78a6..d3280dfb 100644 --- a/src/python/queue.py +++ b/src/python/queue.py @@ -1,34 +1,90 @@ -""" Implementação da estrutura de dados "fila" """ - import random +class Node: + def __init__(self, value): + self.value = value + self.left_ptr = None + + @property + def prev(self): + return self.left_ptr + + @prev.setter + def prev(self, ptr): + self.left_ptr = ptr + + @property + def get_value(self): + return self.value + + class Queue: def __init__(self): - self.__queue = [] + self.head = None + self.tail = None + self.length = 0 def enqueue(self, value): - self.__queue.append(value) + new = Node(value) + self.length += 1 + # if empty make new node both head and tail of queue + if self.head is None: + self.head = new + self.tail = new + # otherwise add new node to end of queue and update tail + else: + self.tail.prev = new + self.tail = new def dequeue(self): - return self.__queue.pop(0) + if self.length == 0: + print("Queue is empty, cannot dequeue") + return + else: + self.head = self.head.prev + self.length -= 1 def show(self): - print(f"Queue: {self.__queue}") + ptr = self.head + val = [] + while ptr is not None: + val.append(ptr.get_value) + ptr = ptr.prev + + print(val) + + def length(self): + return self.length def main(): queue = Queue() - for _ in range(0, 10): - queue.enqueue(random.randint(10, 99)) - + print("Queuing 1 and 7") + queue.enqueue(1) queue.show() + print(f"Queue is length {queue.length}") + queue.enqueue(7) + queue.show() + print(f"Queue is length {queue.length}") + print("Dequeuing twice") queue.dequeue() + queue.show() + print(f"Queue is length {queue.length}") + queue.dequeue() + queue.show() + print(f"Queue is length {queue.length}") + + print("Dequeuing again") queue.dequeue() + print(f"Queue is length {queue.length}") + print("Queueing 12") + queue.enqueue(12) queue.show() + print(f"Queue is length {queue.length}") if __name__ == "__main__": From 4042dc0383ac212c52310798ee3f30c74817cc9f Mon Sep 17 00:00:00 2001 From: MrWeast Date: Fri, 1 Dec 2023 10:12:32 -0500 Subject: [PATCH 2/4] removed un-used import removed import random and added a comment --- src/python/queue.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/python/queue.py b/src/python/queue.py index d3280dfb..9cd75f0e 100644 --- a/src/python/queue.py +++ b/src/python/queue.py @@ -1,6 +1,3 @@ -import random - - class Node: def __init__(self, value): self.value = value @@ -46,6 +43,7 @@ def dequeue(self): self.length -= 1 def show(self): + # first element is the head of the queue ptr = self.head val = [] while ptr is not None: From 71db00544cef2b5ee7634426d7197d1cfb0cc296 Mon Sep 17 00:00:00 2001 From: MrWeast Date: Fri, 1 Dec 2023 10:20:45 -0500 Subject: [PATCH 3/4] fixed dequeue to return dequeued value fixed dequeue --- src/python/queue.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/python/queue.py b/src/python/queue.py index 9cd75f0e..7ef5e5f5 100644 --- a/src/python/queue.py +++ b/src/python/queue.py @@ -39,8 +39,10 @@ def dequeue(self): print("Queue is empty, cannot dequeue") return else: + tmp = self.head self.head = self.head.prev self.length -= 1 + return tmp.get_value def show(self): # first element is the head of the queue @@ -67,16 +69,15 @@ def main(): queue.show() print(f"Queue is length {queue.length}") - print("Dequeuing twice") - queue.dequeue() + print(f"Dequeuing {queue.dequeue()}") queue.show() print(f"Queue is length {queue.length}") - queue.dequeue() + print(f"Dequeuing {queue.dequeue()}") queue.show() print(f"Queue is length {queue.length}") - print("Dequeuing again") - queue.dequeue() + + print(f"Dequeuing {queue.dequeue()}") print(f"Queue is length {queue.length}") print("Queueing 12") From 57db60f6c12c2dd1c069d392f053042d7f9c8041 Mon Sep 17 00:00:00 2001 From: MrWeast Date: Fri, 1 Dec 2023 10:28:35 -0500 Subject: [PATCH 4/4] blacks formatting fixed formatting --- src/python/queue.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/python/queue.py b/src/python/queue.py index 7ef5e5f5..1730f820 100644 --- a/src/python/queue.py +++ b/src/python/queue.py @@ -76,7 +76,6 @@ def main(): queue.show() print(f"Queue is length {queue.length}") - print(f"Dequeuing {queue.dequeue()}") print(f"Queue is length {queue.length}")