题目链接:
题目描述:
解题思路:
- 栈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();
}
}