Skip to content

Instantly share code, notes, and snippets.

@praveenvvstgy
Created November 10, 2014 11:35
Show Gist options
  • Save praveenvvstgy/b42d7b7ebdb3a97b62fc to your computer and use it in GitHub Desktop.
Save praveenvvstgy/b42d7b7ebdb3a97b62fc to your computer and use it in GitHub Desktop.
Implement a queue with 2 stacks . Your queue should have an enqueue and a dequeue function and it should be "first in first out" (FIFO). Optimize for the time cost of m function calls on your queue. These can be any mix of enqueue and dequeue calls. Assume you already have a stack implementation and it gives O(1) time push and pop.
stack1 = []
stack2 = []
def enqueuue(a):
stack1.append(a)
def dequeue():
if len(stack2) > 0:
return stack2.pop()
elif len(stack2) == 0 and len(stack1) > 0:
while(len(stack1) > 0):
stack2.append(stack1.pop())
return stack2.pop()
else:
return "Stack Underflow"
print dequeue()
enqueue(10)
enqueue(9)
enqueue(8)
print dequeue()
print dequeue()
enqueue(7)
print dequeue()
print dequeue()
print dequeue()
enqueue(6)
print dequeue()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment