Implementing Queue using Stack on Linked List
Run the code here: https://repl.it/@VinitKhandelwal/QueueUsingStack
4
3
2
1
None
Run the code here: https://repl.it/@VinitKhandelwal/QueueUsingStack
class Stack:
def __init__(self):
self.reset()
def reset(self):
self.top = None
def push(self, value):
new_node = Node(value)
if self.top is not None:
new_node.pointer = self.top
self.top = new_node
def peek(self):
if self.top is not None:
return self.top.value
def pop(self):
if self.top == None or self.top.pointer == None:
self.reset()
else:
self.top = self.top.pointer
class Node:
def __init__(self, value=None, pointer=None):
self.value = value
self.pointer = pointer
class QueueUsingStack:
def __init__(self):
self.obj = Stack()
def enqueue(self, value):
self.obj.push(value)
def peek(self):
self.obj
obj2 = Stack()
while self.obj.peek() is not None:
bottom = self.obj.peek()
obj2.push(bottom)
self.obj.pop()
while obj2.peek() is not None:
bottom2 = obj2.peek()
self.obj.push(bottom2)
obj2.pop()
try:
return bottom
except:
return None
def dequeue(self):
self.obj
obj2 = Stack()
while self.obj.peek() is not None:
bottom = self.obj.peek()
obj2.push(bottom)
self.obj.pop()
i = 0
while obj2.peek() is not None:
if i > 0:
bottom2 = obj2.peek()
self.obj.push(bottom2)
obj2.pop()
i += 1
try:
return bottom
except:
return None
class Node:
def __init__(self, value=None, pointer=None):
self.value = value
self.pointer = pointer
obj = QueueUsingStack()
obj.enqueue(5)
obj.enqueue(4)
obj.enqueue(3)
obj.enqueue(2)
obj.enqueue(1)
print(obj.peek())
obj.dequeue()
print(obj.peek())
obj.dequeue()
print(obj.peek())
obj.dequeue()
print(obj.peek())
obj.dequeue()
print(obj.peek())
obj.dequeue()
print(obj.peek())
OUTPUT
54
3
2
1
None
Comments
Post a Comment