File tree Expand file tree Collapse file tree 1 file changed +65
-9
lines changed Expand file tree Collapse file tree 1 file changed +65
-9
lines changed Original file line number Diff line number Diff line change 1- """ Implementação da estrutura de dados "fila" """
2-
31import random
42
53
4+ class Node :
5+ def __init__ (self , value ):
6+ self .value = value
7+ self .left_ptr = None
8+
9+ @property
10+ def prev (self ):
11+ return self .left_ptr
12+
13+ @prev .setter
14+ def prev (self , ptr ):
15+ self .left_ptr = ptr
16+
17+ @property
18+ def get_value (self ):
19+ return self .value
20+
21+
622class Queue :
723 def __init__ (self ):
8- self .__queue = []
24+ self .head = None
25+ self .tail = None
26+ self .length = 0
927
1028 def enqueue (self , value ):
11- self .__queue .append (value )
29+ new = Node (value )
30+ self .length += 1
31+ # if empty make new node both head and tail of queue
32+ if self .head is None :
33+ self .head = new
34+ self .tail = new
35+ # otherwise add new node to end of queue and update tail
36+ else :
37+ self .tail .prev = new
38+ self .tail = new
1239
1340 def dequeue (self ):
14- return self .__queue .pop (0 )
41+ if self .length == 0 :
42+ print ("Queue is empty, cannot dequeue" )
43+ return
44+ else :
45+ self .head = self .head .prev
46+ self .length -= 1
1547
1648 def show (self ):
17- print (f"Queue: { self .__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 ))
25-
64+ print ("Queuing 1 and 7" )
65+ queue .enqueue (1 )
2666 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 } " )
2771
72+ print ("Dequeuing twice" )
2873 queue .dequeue ()
74+ queue .show ()
75+ print (f"Queue is length { queue .length } " )
76+ queue .dequeue ()
77+ queue .show ()
78+ print (f"Queue is length { queue .length } " )
79+
80+ print ("Dequeuing again" )
2981 queue .dequeue ()
82+ print (f"Queue is length { queue .length } " )
3083
84+ print ("Queueing 12" )
85+ queue .enqueue (12 )
3186 queue .show ()
87+ print (f"Queue is length { queue .length } " )
3288
3389
3490if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments