要使用栈实现队列的话,就需要使用两个栈,一个是用来存入第一个进队列的值,然后通过出栈,移动到另外一个栈中,这时候在另外一个栈里面的顺序是正确的,此时在进行出栈,就实现了队列的效果.
- 代码实现
import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); /*整体思路 1,队列,先进先出 2,栈先进后出 利用栈实现队列,就是先入stack1,如果出栈再入栈stack2,stack2再出栈就可以了。 入栈的时候,始终入 stack1 出队列的时候,判断stack2是不是空的,不是空的,就正常出栈 如果是空的,就让stack1出栈再入栈stack2,直到stack1为空 */ public void push(int node) { // stack1.push(node); } public int pop() { //判断stack2是不是空的 if(!stack2.isEmpty()){ return stack2.pop(); }else if(!stack1.isEmpty()){ //判断stack1是不是空的 //如果stack1空,则放回-1 while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } return stack2.pop(); }else{ return -1; } } }