package stack; import java.util.Stack; /** * Created by gouthamvidyapradhan on 29/07/2017. * Implement the following operations of a queue using stacks. *

* push(x) -- Push element x to the back of queue. * pop() -- Removes the element from in front of queue. * peek() -- Get the front element. * empty() -- Return whether the queue is empty. *

* Notes: * You must use only standard operations of a stack -- which means only push to top, peek/pop from top, size, and is empty operations are valid. * Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack. * You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue). */ public class MyQueue { private Stack stack; public static void main(String[] args) throws Exception { MyQueue myQueue = new MyQueue(); myQueue.push(5); myQueue.push(12); myQueue.push(7); myQueue.push(9); System.out.println(myQueue.peek()); System.out.println(myQueue.pop()); myQueue.push(56); myQueue.push(53); System.out.println(myQueue.pop()); } /** * Initialize your data structure here. */ public MyQueue() { stack = new Stack<>(); } /** * Push element x to the back of queue. */ public void push(int x) { stack.push(x); } /** * Removes the element from in front of queue and returns that element. */ public int pop() { Stack auxStack = new Stack<>(); while (!stack.isEmpty()) { auxStack.push(stack.pop()); } int result = auxStack.pop(); while (!auxStack.isEmpty()) { stack.push(auxStack.pop()); } return result; } /** * Get the front element. */ public int peek() { Stack auxStack = new Stack<>(); while (!stack.isEmpty()) { auxStack.push(stack.pop()); } int result = auxStack.peek(); while (!auxStack.isEmpty()) { stack.push(auxStack.pop()); } return result; } /** * Returns whether the queue is empty. */ public boolean empty() { return stack.isEmpty(); } }