Skip to content

Commit 1ca0075

Browse files
committed
Deque
1 parent e322ee9 commit 1ca0075

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

Queues /QueuesLinked.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
class _Node:
2+
__slots__ = '_element', '_next'
3+
4+
def __init__(self, element, next):
5+
self._element = element
6+
self._next = next
7+
8+
class QueuesLinked:
9+
def __init__(self):
10+
self._front = None
11+
self._rear = None
12+
self._size = 0
13+
14+
def __len__(self):
15+
return self._size
16+
17+
def isempty(self):
18+
return self._size == 0
19+
20+
def enqueue(self, e):
21+
newest = _Node(e, None)
22+
if self.isempty():
23+
self._front = newest
24+
else:
25+
self._rear._next = newest
26+
self._rear = newest
27+
self._size += 1
28+
29+
def dequeue(self):
30+
if self.isempty():
31+
print('Queue is empty')
32+
return
33+
e = self._front._element
34+
self._front = self._front._next
35+
self._size -= 1
36+
if self.isempty():
37+
self._rear = None
38+
return e
39+
40+
def first(self):
41+
if self.isempty():
42+
print('Queue is empty')
43+
return
44+
return self._front._element
45+
46+
def display(self):
47+
p = self._front
48+
while p:
49+
print(p._element,end=' <-- ')
50+
p = p._next
51+
print()
52+
53+
54+
Q = QueuesLinked()
55+
Q.enqueue(5)
56+
Q.enqueue(3)
57+
print('Queue:')
58+
Q.display()
59+
print('Queue Length:', len(Q))
60+
ele = Q.dequeue()
61+
print('Queue:')
62+
Q.display()
63+
print('Queue Length:', len(Q))
64+
print('Removed Element:',ele)
65+
print('Is Queue Empty:',Q.isempty())
66+
Q.enqueue(7)
67+
print('Queue:')
68+
Q.display()
69+
print('Queue Length:', len(Q))
70+
Q.enqueue(12)
71+
print('Queue:')
72+
Q.display()
73+
print('Queue Length:', len(Q))
74+
ele = Q.dequeue()
75+
print('Queue:')
76+
Q.display()
77+
print('Queue Length:', len(Q))
78+
print('Removed Element:',ele)
79+
print('First Element:',Q.first())

0 commit comments

Comments
 (0)