Skip to content

Commit 09e6fd3

Browse files
Implement queue using stack
1 parent 04438ec commit 09e6fd3

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

implement_queue_using_stack.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class Stack:
2+
def __init__(self):
3+
self.items = []
4+
def size(self):
5+
return len(self.items)
6+
def push(self, value):
7+
self.items.append(value)
8+
def pop(self):
9+
if self.size == 0:
10+
return None
11+
return self.items.pop()
12+
13+
class Queue:
14+
def __init__(self):
15+
self.instorage = Stack()
16+
self.outstorage = Stack()
17+
18+
def size(self):
19+
return self.instorage.size() + self.outstorage.size()
20+
def enqueue(self, value):
21+
self.instorage.push(value)
22+
def dequeue(self):
23+
if not self.outstorage.items:
24+
while self.instorage.items:
25+
self.outstorage.push(self.instorage.pop())
26+
return self.outstorage.pop()
27+
28+
q = Queue()
29+
q.enqueue(1)
30+
q.enqueue(2)
31+
q.enqueue(3)
32+
33+
# Test size
34+
print ("Pass" if (q.size() == 3) else "Fail")
35+
36+
# Test dequeue
37+
print ("Pass" if (q.dequeue() == 1) else "Fail")
38+
39+
# Test enqueue
40+
q.enqueue(4)
41+
print ("Pass" if (q.dequeue() == 2) else "Fail")
42+
print ("Pass" if (q.dequeue() == 3) else "Fail")
43+
print ("Pass" if (q.dequeue() == 4) else "Fail")
44+
q.enqueue(5)
45+
print ("Pass" if (q.size() == 1) else "Fail")
46+
47+

0 commit comments

Comments
 (0)