diff --git a/Others/QueueUsingTwoStacks.java b/Others/QueueUsingTwoStacks.java index 19550df8..d932f272 100644 --- a/Others/QueueUsingTwoStacks.java +++ b/Others/QueueUsingTwoStacks.java @@ -55,6 +55,21 @@ class QueueWithStack { return this.outStack.pop(); } + /** + * Peek at the element from the front of the queue + * + * @return the new front of the queue + */ + public Object peek() { + if(this.outStack.isEmpty()) { + // Move all elements from inStack to outStack (preserving the order) + while(!this.inStack.isEmpty()) { + this.outStack.push( this.inStack.pop() ); + } + } + return this.outStack.peek(); + } + /** * Returns true if the queue is empty * @@ -101,18 +116,24 @@ public class QueueUsingTwoStacks { // outStack: [(top) 2, 3, 4] myQueue.insert(5); + System.out.println(myQueue.peek()); //Will print 2 // instack: [(top) 5] // outStack: [(top) 2, 3, 4] myQueue.remove(); + System.out.println(myQueue.peek()); //Will print 3 // instack: [(top) 5] // outStack: [(top) 3, 4] myQueue.remove(); + System.out.println(myQueue.peek()); //Will print 4 // instack: [(top) 5] // outStack: [(top) 4] myQueue.remove(); // instack: [(top) 5] // outStack: [] + System.out.println(myQueue.peek()); //Will print 5 + // instack: [] + // outStack: [(top) 5] myQueue.remove(); // instack: [] // outStack: []