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
2
5
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
4
17
5
18
6
19
class Queue :
7
20
def __init__ (self ):
8
- self .__queue = []
21
+ self .head = None
22
+ self .tail = None
23
+ self .length = 0
9
24
10
25
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
12
36
13
37
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
15
46
16
47
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
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 ))
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 } " )
25
71
72
+ print (f"Dequeuing { queue .dequeue ()} " )
73
+ queue .show ()
74
+ print (f"Queue is length { queue .length } " )
75
+ print (f"Dequeuing { queue .dequeue ()} " )
26
76
queue .show ()
77
+ print (f"Queue is length { queue .length } " )
27
78
28
- queue .dequeue ()
29
- queue .dequeue ( )
79
+ print ( f"Dequeuing { queue .dequeue () } " )
80
+ print ( f"Queue is length { queue .length } " )
30
81
82
+ print ("Queueing 12" )
83
+ queue .enqueue (12 )
31
84
queue .show ()
85
+ print (f"Queue is length { queue .length } " )
32
86
33
87
34
88
if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments