Skip to content

Commit a0c6d09

Browse files
authored
Merge pull request #337 from MrWeast/feature/queue_python
update queue.py
2 parents a28674a + 57db60f commit a0c6d09

File tree

1 file changed

+64
-10
lines changed

1 file changed

+64
-10
lines changed

src/python/queue.py

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,88 @@
1-
""" Implementação da estrutura de dados "fila" """
1+
class Node:
2+
def __init__(self, value):
3+
self.value = value
4+
self.left_ptr = None
25

3-
import random
6+
@property
7+
def prev(self):
8+
return self.left_ptr
9+
10+
@prev.setter
11+
def prev(self, ptr):
12+
self.left_ptr = ptr
13+
14+
@property
15+
def get_value(self):
16+
return self.value
417

518

619
class Queue:
720
def __init__(self):
8-
self.__queue = []
21+
self.head = None
22+
self.tail = None
23+
self.length = 0
924

1025
def enqueue(self, value):
11-
self.__queue.append(value)
26+
new = Node(value)
27+
self.length += 1
28+
# if empty make new node both head and tail of queue
29+
if self.head is None:
30+
self.head = new
31+
self.tail = new
32+
# otherwise add new node to end of queue and update tail
33+
else:
34+
self.tail.prev = new
35+
self.tail = new
1236

1337
def dequeue(self):
14-
return self.__queue.pop(0)
38+
if self.length == 0:
39+
print("Queue is empty, cannot dequeue")
40+
return
41+
else:
42+
tmp = self.head
43+
self.head = self.head.prev
44+
self.length -= 1
45+
return tmp.get_value
1546

1647
def show(self):
17-
print(f"Queue: {self.__queue}")
48+
# first element is the head of the queue
49+
ptr = self.head
50+
val = []
51+
while ptr is not None:
52+
val.append(ptr.get_value)
53+
ptr = ptr.prev
54+
55+
print(val)
56+
57+
def length(self):
58+
return self.length
1859

1960

2061
def main():
2162
queue = Queue()
2263

23-
for _ in range(0, 10):
24-
queue.enqueue(random.randint(10, 99))
64+
print("Queuing 1 and 7")
65+
queue.enqueue(1)
66+
queue.show()
67+
print(f"Queue is length {queue.length}")
68+
queue.enqueue(7)
69+
queue.show()
70+
print(f"Queue is length {queue.length}")
2571

72+
print(f"Dequeuing {queue.dequeue()}")
73+
queue.show()
74+
print(f"Queue is length {queue.length}")
75+
print(f"Dequeuing {queue.dequeue()}")
2676
queue.show()
77+
print(f"Queue is length {queue.length}")
2778

28-
queue.dequeue()
29-
queue.dequeue()
79+
print(f"Dequeuing {queue.dequeue()}")
80+
print(f"Queue is length {queue.length}")
3081

82+
print("Queueing 12")
83+
queue.enqueue(12)
3184
queue.show()
85+
print(f"Queue is length {queue.length}")
3286

3387

3488
if __name__ == "__main__":

0 commit comments

Comments
 (0)