题目描述:用栈模拟实现一个队列的push()和pop()方法。
解题思路:
栈的特点是“先进后出”,队列的特点是“先进先出”。所以我的解题思路是我们可以专门找一个栈来存放入队的数据,然后一个栈专门用来出队。如果在当前的出队栈不是空的我们就先出出栈队的,如果出栈队为空,则要先将入队栈中的数据先压倒出栈队,再从出队栈的顶部开始弹出数据。
入队:
出队:
源代码:
import java.util.Stack;
public class stackToqueue {
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.empty()&& stack2.empty()){
return -1;
}
int n = 0;
if(!stack2.empty()){
n = stack2.pop();
}else{
while(!stack1.empty()){
stack2.push(stack1.pop());
}
n = stack2.pop();
}
return n;
}
}