File tree 1 file changed +59
-0
lines changed
1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
1
+ '''
2
+ Overview:
3
+ FIFO - First In First Out
4
+ People in Queue = En Queue
5
+ Remove People = De Queue
6
+
7
+ Implementation:
8
+ Remove and Add on either end (First/Last)
9
+ List
10
+ One end is O(1) other is O(n) because of re-indexing
11
+ Linked List
12
+ Removing on one end is O(n) because of traversal,
13
+ but everything else is O(1)
14
+ Therefore, you want to only En-queue from Last
15
+ and de-queue from First
16
+ '''
17
+
18
+
19
+ class Node :
20
+ def __init__ (self , value ):
21
+ self .value = value
22
+ self .next = None
23
+
24
+
25
+ class Queue :
26
+ def __init__ (self , value ):
27
+ new_node = Node (value )
28
+ self .first = new_node
29
+ self .last = new_node
30
+ self .length = 1
31
+
32
+ def print_queue (self ):
33
+ temp = self .first
34
+ while temp is not None :
35
+ print (temp .value )
36
+ temp = temp .next
37
+
38
+ def enqueue (self , value ):
39
+ new_node = Node (value )
40
+ if self .first is None :
41
+ self .first = new_node
42
+ self .last = new_node
43
+ else :
44
+ self .last .next = new_node
45
+ self .last = new_node
46
+ self .length += 1
47
+
48
+ def dequeue (self ):
49
+ if self .first is None :
50
+ return None
51
+ temp = self .first
52
+ if self .length == 1 :
53
+ self .first = None
54
+ self .last = None
55
+ else :
56
+ self .first = temp .next
57
+ temp .next = None
58
+ self .length -= 1
59
+ return temp
You can’t perform that action at this time.
0 commit comments