Learn-dsa..in 30 days!



























CC-6 : Implement Queue using 2 Stacks.

Description:

A Stack data structure follows Last In, First Out (LIFO) principle. Implement a FIFO Queue using 2 stacks.

Test cases and expected outputs:

Input Parameters Expected outputs
QueueUsingStacks queue=new QueueUsingStacks();
queue.add(9);
queue.add(14);
queue.add(17);
queue.add(34);
queue.add(21);
queue.add(28);
Queue nodes: 9 <- 14 <- 17 <- 34 <- 21 <- 28
queue.remove();
queue.remove();
queue.add(44);
queue.add(55);
Queue nodes:17 <- 34 <- 21 <- 28<-44<-55

Pseudocode:

Declare and initialize 2 stacks by name of stk and Q.
Whenever a new element is to be added to FIFO Queue, add it to stk.
Whenever an element needs to be removed from FIFO Queue:
Pop elements one by one from stk and push to Q till stk becomes empty.
Return first element from Q.

Code:

public class QueueUsingStacks {	
	
private Stack<Integer> stk=new Stack<Integer>();
private Stack<Integer> Q=new Stack<Integer>();

public boolean add(int data){
	stk.push(data);
	return true;
}

public int remove() {
	if (Q.size()==0) {
		while (stk.size()!=0) {
			Q.push(stk.pop());
		}		
	}
return Q.pop();	
}

public int get() {
	if (Q.size()==0) {
		while (stk.size()!=0) {
			Q.push(stk.pop());
		}		
	}
	return Q.peek();
}

public int getSize() {
	return Q.size()+stk.size();
}
}

Click here to download and run code and test cases !