算法-用两个栈实现队列
程序员文章站
2022-04-15 23:16:11
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node)...
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.add(node);
}
public int pop() {
if(stack2.isEmpty()) {//情况一 1、如果stack2为空
while(!stack1.isEmpty()) {
stack2.add(stack1.pop());//情况一 2、将stack1元素全部入栈stack2
}
}else{
return stack2.pop();//情况二 stack2有元素就直接出栈
}
return stack2.pop();//情况一 3、stack2全部出栈
}
}
思路:栈是先进的后出,队列是先进先出
push时先让所有元素进stack1,pop时,判断stack2是否有元素,没有,就将stack1元素全部出栈到stack2,然后stack2出栈,有元素就直接出栈 (如果stack2有元素,那么stack1一定没有元素)
本文地址:https://blog.csdn.net/qq_45100361/article/details/107687749
上一篇: while循环语法格式与执行流程
下一篇: 使用注解和反射判断指定的字段不能为空