-
Notifications
You must be signed in to change notification settings - Fork 3
/
queue.py
65 lines (47 loc) · 1.13 KB
/
queue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from primitives import ListNode
__author__ = 'V Manikantan'
documentation = '''
DETAILS OF THE METHODS:
1) Push adds new value to queue at rear
2) Pop removes a value from queue at front if it exists, otherwise returns empty queue.
3) Front returns the front value of queue and Rear returns the rear value of quqeue
4) Logically non existing objects are implemented as NoneType objects.
'''
class Queue:
def __init__(self):
self.front = self.rear = None
def __str__(self):
if(self.front):
v1 = self.front.key
else:
v1 = None
if(self.rear):
v2 = self.rear.key
else:
v2 = None
return str([v1,v2])
def Push(self,val):
new_node = ListNode(key=val,next=None)
if(not self.rear):
self.front = self.rear = new_node
else:
self.rear.next = new_node
self.rear = new_node
def Pop(self):
if(self.front):
if(self.front==self.rear):
self.front = self.rear = None
else:
self.front = self.front.next
def Front(self):
if(self.front):
return self.front.key
else:
return None
def Rear(self):
if(self.rear):
return self.rear.key
else:
return None
if __name__ == '__main__':
pass