题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
实现如下:
package cn.yzx.nowcoder;
import java.util.Stack;
/**
* 题目描述
* 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
* @author Administrator
*
*/
public class TwoStackToQueue {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
//将栈1中的数据全部存入栈2就是队列的顺序了,之后pop一个元素,就是队列的出队操作
while(!stack1.isEmpty()){
int pop1 = stack1.pop();
stack2.push(pop1);
}
int res = stack2.pop();
//之后栈2中的数据全部存入栈1,这样是还原原数据,等待再次push操作
while(!stack2.isEmpty()){
int pop2 = stack2.pop();
stack1.push(pop2);
}
return res;
}
public static void main(String[] args) {
TwoStackToQueue queue = new TwoStackToQueue();
queue.push(1);
queue.push(2);
queue.push(3);
queue.push(4);
for(int i=0;i<2;i++){
int temp = queue.pop();
System.out.print(temp+" ");
}
queue.push(11);
queue.push(12);
for(int i=0;i<4;i++){
int temp = queue.pop();
System.out.print(temp+" ");
}
}
}