题目分析
栈:基本数据结构,满足先进后出特性。
队列:就像排队一样,先进先出。
思路:根据栈的特性和队列的特性,利用一个栈来保存数据,一个栈来辅助数据的push操作。
代码实现
package stackQueueAlgorithm;
import java.util.Stack;
public class TwoStackToQueue {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public void push(Integer node){
//stack1作为辅助栈进行入队操作
//stack2作为主栈用来保存已经入队的数据
if(stack2.isEmpty()){
stack2.push(node);
}else{
//stack2不为空,就将所有的数据依次弹出压入stack1
while(!stack2.isEmpty()){
stack1.push(stack2.pop());
}
stack2.push(node);
//将stack1的数据全部压回来
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
}
public int pop(){
//出栈弹出stack2栈顶的数据即可
return stack2.pop();
}
}
由于Java当中的Stack继承自Vector,而使用的JRT库方法已经对异常和各种条件考虑完全,因此pop方法只需要对栈顶数据进行pop即可。