File tree Expand file tree Collapse file tree 1 file changed +64
-10
lines changed
Expand file tree Collapse file tree 1 file changed +64
-10
lines changed Original file line number Diff line number Diff line change 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
619class 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
2061def 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
3488if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments