Java:如何用两个队列实现栈

 我来答
qwwqqwwqyear
2018-06-08 · TA获得超过228个赞
知道小有建树答主
回答量:161
采纳率:94%
帮助的人:79.8万
展开全部
package leetcode.test;

import java.util.ArrayDeque;
import java.util.Queue;

/**
 * 队列实现的栈
 *
 * @author Administrator
 */
public class QueueStack<T> {
    Queue<T> nowQue = new ArrayDeque<>();
    Queue<T> otherQue = new ArrayDeque<>();


    public T pop() {
        T last = null;
        while (!nowQue.isEmpty()) {
            last = nowQue.peek();
            nowQue.poll();
            if (!nowQue.isEmpty()) {
                otherQue.offer(last);
            }
        }
        switchQueue();
        return last;
    }

    private void switchQueue() {
        Queue<T> tmp = nowQue;
        nowQue = otherQue;
        otherQue = tmp;
    }

    public boolean push(T obj) {
        return nowQue.offer(obj);
    }

    public boolean isEmpty() {
        return nowQue.isEmpty();
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("{\"QueueStack\":{");
        sb.append("\"nowQue\":")
                .append(nowQue);
        sb.append(",\"otherQue\":")
                .append(otherQue);
        sb.append("}}");
        return sb.toString();
    }

    public static void main(String[] args) {
        QueueStack<String> queueStack = new QueueStack();
        queueStack.push("1");
        queueStack.push("2");
        queueStack.push("3");
        queueStack.push("4");
        while (!queueStack.isEmpty()) {
            System.out.println(queueStack.pop());
        }
    }
}

阡陌红尘358
2018-06-08 · TA获得超过469个赞
知道小有建树答主
回答量:638
采纳率:68%
帮助的人:163万
展开全部
你可以自己好好想一想的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式