Wednesday, December 2, 2015

Stack Implementation using two Queues

import java.util.LinkedList;
import java.util.Queue;

public class Stack {
    Queue<Integer> Q1,Q2;
    public Stack() {
        Q1=new LinkedList<Integer>();
        Q2=new LinkedList<Integer>();
    }
    public void push(int data)    {
        Q1.add(data);
    }
    public int peek()    {
        int size=Q1.size()-1;
        for(int i=0; i<size;i++)
            Q2.add(Q1.remove());
        int peek = Q1.remove();
        Q2.add(peek);
        SwapQueues();
        return peek;
    }
    public int pop()    {
        int size=Q1.size()-1;
        for(int i=0; i<size;i++)
            Q2.add(Q1.remove());
        int pop = Q1.remove();
        SwapQueues();
        return pop;
    }
    private void SwapQueues()    {
        Queue<Integer> temp = Q1;
        Q1=Q2;
        Q2=temp;
    }
}
UA-39217154-2