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
-
3
1
import random
4
2
5
3
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
+
6
22
class Queue :
7
23
def __init__ (self ):
8
- self .__queue = []
24
+ self .head = None
25
+ self .tail = None
26
+ self .length = 0
9
27
10
28
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
12
39
13
40
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
15
47
16
48
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
18
59
19
60
20
61
def main ():
21
62
queue = Queue ()
22
63
23
- for _ in range (0 , 10 ):
24
- queue .enqueue (random .randint (10 , 99 ))
25
-
64
+ print ("Queuing 1 and 7" )
65
+ queue .enqueue (1 )
26
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 } " )
27
71
72
+ print ("Dequeuing twice" )
28
73
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" )
29
81
queue .dequeue ()
82
+ print (f"Queue is length { queue .length } " )
30
83
84
+ print ("Queueing 12" )
85
+ queue .enqueue (12 )
31
86
queue .show ()
87
+ print (f"Queue is length { queue .length } " )
32
88
33
89
34
90
if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments