参考:B站UP--子烁爱学习(推荐大家观看原视频)
题目描述:
题目解析:
一个栈是不能完成队列的先进先出的概念的,只能依靠两个栈实现。
首先,往栈1中进行push操作,然后,在要进行顺序取出的时候,就将栈1的数据pop到栈2中,这样就完成了顺序的颠倒,这时再进行栈2的pop操作,就可以实现先进先出,然后之后再进来的元素就先push进栈1,然后等栈2的数据被消耗殆尽了,再次进行栈1的pop操作,和栈2的pop操作,完成先进先出
代码示例
public class Algorithm05 {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
//将数据先push进栈1
public void push(int node) {
stack1.push(node);
}
//将数据先pop进栈2,栈2再pop出栈
public int pop() {
if(stack2.size()<=0){
while(stack1.size()!=0){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}