Skip to content

Commit 653ac1b

Browse files
Added Queues
1 parent 31bc710 commit 653ac1b

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

Queue.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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

0 commit comments

Comments
 (0)