(java版剑指offer)JZ9 用两个栈实现队列

用两个栈实现队列

https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D13&difficulty=&judgeStatus=&tags=&title=&gioEnter=menu

alt

//方法一:栈1存数据,栈2弹出数据。
import java.util.*;
import java.lang.*;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    public void push(int node) {
        stack1.push(node);    //栈1用于压入数据
    }
    
    //栈2用于弹出数据,实现队列的先进先出
    public int pop() {
        // 先判断stack2是否为空时,若为空,把栈1中的数据全部弹出压入栈2,实现逆序
        if (stack2.isEmpty()){
            while (!stack1.isEmpty()){    //当栈1不为空,数据一直迁移,直至栈为空
                stack2.push(stack1.pop());
            }
        }
        // 再次判断stack2,如果仍然为空,说明,栈1也没有数据了,那么就抛出异常
        if (stack2.isEmpty()){
            throw new RuntimeException("队列中无元素");
        }
        return stack2.pop();    //完成以上判断后,最后弹出栈2的值,实现先进先出
    }
}
全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
vegetable_more_exercise:1-1.5万,没错啊,最少是1人民币,在区间内
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务