用栈实现队列
思路
主要关注栈的先进后出特性,及队列的先进先出特性。
需要两个栈完成操作,一个为入栈,一个为出栈。入栈负责存数,出栈负责出数。数字进入栈,第二次从入栈进出栈,则完成顺序颠倒。
需要注意的是,若出栈栈内不为空则直接完成pop,peek操作。若出栈为空,则将入栈栈内全部数存入出栈。
总结
学习栈和队列的基础知识。
代码
Stack<Integer> stIn;
Stack<Integer> stOut;
public MyQueue() {
stIn=new Stack<>();
stOut=new Stack<>();
}
public void push(int x) {
stIn.add(x);
}
public int pop() {
if (!stOut.isEmpty()) return stOut.pop();
while (!stIn.isEmpty()){
stOut.add(stIn.pop());
}
return stOut.pop();
}
public int peek() {
if (!stOut.isEmpty()) return stOut.peek();
while (!stIn.isEmpty()){
stOut.add(stIn.pop());
}
return stOut.peek();
}
public boolean empty() {
if (stOut.isEmpty() && stIn.isEmpty()) return true;
else return false;
}