Merge pull request #290 from sahilb2/master

Added peekFront and peekBack functions
This commit is contained in:
Christian Bender
2018-03-31 16:38:25 +02:00
committed by GitHub

View File

@ -12,7 +12,7 @@ import java.util.Stack;
* The elements that are added first are the first to be removed. * The elements that are added first are the first to be removed.
* New elements are added to the back/rear of the queue. * New elements are added to the back/rear of the queue.
* *
* @author sahilb2 * @author sahilb2 (https://www.github.com/sahilb2)
* *
*/ */
class QueueWithStack { class QueueWithStack {
@ -58,9 +58,9 @@ class QueueWithStack {
/** /**
* Peek at the element from the front of the queue * Peek at the element from the front of the queue
* *
* @return the new front of the queue * @return the front element of the queue
*/ */
public Object peek() { public Object peekFront() {
if(this.outStack.isEmpty()) { if(this.outStack.isEmpty()) {
// Move all elements from inStack to outStack (preserving the order) // Move all elements from inStack to outStack (preserving the order)
while(!this.inStack.isEmpty()) { while(!this.inStack.isEmpty()) {
@ -70,6 +70,15 @@ class QueueWithStack {
return this.outStack.peek(); return this.outStack.peek();
} }
/**
* Peek at the element from the back of the queue
*
* @return the back element of the queue
*/
public Object peekBack() {
return this.inStack.peek();
}
/** /**
* Returns true if the queue is empty * Returns true if the queue is empty
* *
@ -84,7 +93,7 @@ class QueueWithStack {
/** /**
* This class is the example for the Queue class * This class is the example for the Queue class
* *
* @author sahilb2 * @author sahilb2 (https://www.github.com/sahilb2)
* *
*/ */
public class QueueUsingTwoStacks { public class QueueUsingTwoStacks {
@ -97,41 +106,46 @@ public class QueueUsingTwoStacks {
public static void main(String args[]){ public static void main(String args[]){
QueueWithStack myQueue = new QueueWithStack(); QueueWithStack myQueue = new QueueWithStack();
myQueue.insert(1); myQueue.insert(1);
System.out.println(myQueue.peekBack()); //Will print 1
// instack: [(top) 1] // instack: [(top) 1]
// outStack: [] // outStack: []
myQueue.insert(2); myQueue.insert(2);
System.out.println(myQueue.peekBack()); //Will print 2
// instack: [(top) 2, 1] // instack: [(top) 2, 1]
// outStack: [] // outStack: []
myQueue.insert(3); myQueue.insert(3);
System.out.println(myQueue.peekBack()); //Will print 3
// instack: [(top) 3, 2, 1] // instack: [(top) 3, 2, 1]
// outStack: [] // outStack: []
myQueue.insert(4); myQueue.insert(4);
System.out.println(myQueue.peekBack()); //Will print 4
// instack: [(top) 4, 3, 2, 1] // instack: [(top) 4, 3, 2, 1]
// outStack: [] // outStack: []
System.out.println(myQueue.isEmpty()); //Will print false System.out.println(myQueue.isEmpty()); //Will print false
System.out.println(myQueue.remove()); //Will print 1 System.out.println(myQueue.remove()); //Will print 1
System.out.println(myQueue.peekBack()); //Will print NULL
// instack: [] // instack: []
// outStack: [(top) 2, 3, 4] // outStack: [(top) 2, 3, 4]
myQueue.insert(5); myQueue.insert(5);
System.out.println(myQueue.peek()); //Will print 2 System.out.println(myQueue.peekFront()); //Will print 2
// instack: [(top) 5] // instack: [(top) 5]
// outStack: [(top) 2, 3, 4] // outStack: [(top) 2, 3, 4]
myQueue.remove(); myQueue.remove();
System.out.println(myQueue.peek()); //Will print 3 System.out.println(myQueue.peekFront()); //Will print 3
// instack: [(top) 5] // instack: [(top) 5]
// outStack: [(top) 3, 4] // outStack: [(top) 3, 4]
myQueue.remove(); myQueue.remove();
System.out.println(myQueue.peek()); //Will print 4 System.out.println(myQueue.peekFront()); //Will print 4
// instack: [(top) 5] // instack: [(top) 5]
// outStack: [(top) 4] // outStack: [(top) 4]
myQueue.remove(); myQueue.remove();
// instack: [(top) 5] // instack: [(top) 5]
// outStack: [] // outStack: []
System.out.println(myQueue.peek()); //Will print 5 System.out.println(myQueue.peekFront()); //Will print 5
// instack: [] // instack: []
// outStack: [(top) 5] // outStack: [(top) 5]
myQueue.remove(); myQueue.remove();