题目链接:
题目描述:

解题思路:
- 栈A用来作入队列。
- 栈B用来出队列,当栈B为空时,栈A全部出栈到栈B,栈B再出栈(即出队列)。
入队:将元素进栈A。
出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。
已经AC的代码:
import java.util.Stack;
public class stackAchieveQueue {
public static void main(String[] args) {
// TODO Auto-generated method stub
stackAchieveQueue saq = new stackAchieveQueue();
for(int i=0; i<5; i++) {
saq.push(i);
}
for(int j=0; j<5; j++) {
System.out.println(saq.pop());
}
}
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if(stack1.isEmpty() && stack2.isEmpty()) {
throw new RuntimeException("Queue is empty!");
}
if(stack2.isEmpty()) {
while(!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}

本文介绍了一种使用两个栈来实现队列数据结构的方法。通过将一个栈用于入队操作,另一个栈用于出队操作,当出队栈为空时,将入队栈的所有元素转移到出队栈,从而实现了队列的先进先出特性。文章提供了详细的解题思路及已通过的Java代码实现。

被折叠的 条评论
为什么被折叠?



