Skip to content

Commit

Permalink
Merge pull request #337 from MrWeast/feature/queue_python
Browse files Browse the repository at this point in the history
update queue.py
  • Loading branch information
kelvins authored Dec 3, 2023
2 parents a28674a + 57db60f commit a0c6d09
Showing 1 changed file with 64 additions and 10 deletions.
74 changes: 64 additions & 10 deletions src/python/queue.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,88 @@
""" Implementação da estrutura de dados "fila" """
class Node:
def __init__(self, value):
self.value = value
self.left_ptr = None

import random
@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:
tmp = self.head
self.head = self.head.prev
self.length -= 1
return tmp.get_value

def show(self):
print(f"Queue: {self.__queue}")
# first element is the head of the 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(f"Dequeuing {queue.dequeue()}")
queue.show()
print(f"Queue is length {queue.length}")
print(f"Dequeuing {queue.dequeue()}")
queue.show()
print(f"Queue is length {queue.length}")

queue.dequeue()
queue.dequeue()
print(f"Dequeuing {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__":
Expand Down

0 comments on commit a0c6d09

Please sign in to comment.