Skip to content

Commit b0fe85a

Browse files
Create stack_two_queues.py
1 parent 616aa31 commit b0fe85a

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

stack_two_queues.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from typing import Any, List
2+
3+
4+
class Queue:
5+
6+
def __init__(self) -> None:
7+
self.queue:List[Any] = []
8+
9+
def size(self) -> int:
10+
return len(self.queue)
11+
12+
def is_empty(self) -> bool:
13+
return len(self.queue) == 0
14+
15+
def enqueue(self, item:Any) -> None:
16+
self.queue.insert(0, item)
17+
18+
def dequeue(self) -> Any:
19+
if self.is_empty():
20+
raise Exception('Queue is empty')
21+
return self.queue.pop()
22+
23+
24+
25+
class Stack:
26+
27+
def __init__(self):
28+
self.input: Queue = Queue()
29+
self.output:Queue = Queue()
30+
31+
32+
def push(self, x: Any) -> None:
33+
self.input.enqueue(x)
34+
35+
36+
def pop(self) -> Any:
37+
if self.input.is_empty():
38+
raise Exception('Queue is empty')
39+
40+
while self.input.size() > 1:
41+
self.output.enqueue(self.input.dequeue())
42+
43+
item:Any = self.input.dequeue()
44+
45+
while not self.output.is_empty():
46+
self.input.enqueue(self.output.dequeue())
47+
48+
return item
49+
50+
51+
def peek(self) -> Any:
52+
if self.input.is_empty():
53+
raise Exception('Queue is empty')
54+
55+
while self.input.size() > 1:
56+
self.output.enqueue(self.input.dequeue())
57+
58+
item:Any = self.input.dequeue()
59+
self.output.enqueue(item)
60+
61+
while not self.output.is_empty():
62+
self.input.enqueue(self.output.dequeue())
63+
return item
64+
65+
66+
def is_empty(self) -> bool:
67+
return self.input.is_empty()

0 commit comments

Comments
 (0)