【Java面试题】用两个栈来实现队列

【题目】:

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

【示例】: 队列:输入1234,输出1234

【关键点】:
利用栈(先进后出)原理、 2个栈组成队列(先进先出);

  • 栈1:入栈顺序abcd、出栈顺序dcba;
  • 栈2:入栈顺序 为栈1的出栈顺序dcba、 出栈顺序为abcd。
    在这里插入图片描述

队列:先进先出(输入abcd,出来顺序依旧是abcd)
在这里插入图片描述
【Java】:

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.push(node);//存入栈1
    }
    public int pop() {//取出
        if(stack2.empty()){//必须判断栈2全为空时,再循环存入栈2,不然队列流水线走可能会错位;
            while(!stack1.isEmpty()) {
                stack2.push(stack1.pop());//取出栈1全部节点存入栈2
            }
        }
        return stack2.pop();//栈2弹出
    }
}
发布了192 篇原创文章 · 获赞 316 · 访问量 12万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 终极编程指南 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览