ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构【队列】(十二):队列实现栈

2019-03-24 16:51:51  阅读:156  来源: 互联网

标签:size 队列 元素 十二 int static 数据结构 originalQueue


问题描述

使用两个队列实现栈,要满足后入先出,比如输入:1 2 3 4 5,那么输出就应该是:5 4 3 2 1

解题思路

使用两个队列,分别是数据队列和辅助队里,

1、数据添加到数据队列中

2、元素出栈时,将有数据的队列元素(保留最后一个元素)移动到无数据的队列

3、将最后一个元素出队,正式所需要的出栈数据

代码实现

在这里插入图片描述

public class QueueImplamentStack {
    //数据队列
    private static Queue originalQueue = new LinkedList();
    //辅助队列
    private static Queue helpQueue = new LinkedList();

    public static void main(String[] args) {
        System.out.println("入栈的元素:");
        //添加数据到数据队列
        for (int i = 1; i < 6; i++) {
            System.out.print(i + " ");
            originalQueue.add(i);
        }
        System.out.println();
        System.out.println("出栈的元素:");
        for (int i = 1; i < 6; i++) {
            //获取元素
            System.out.print(popElement() + " ");
        }
    }

    /**
     * 获取元素
     */
    private static Object popElement() {
        if (originalQueue.isEmpty()) {
            return popElementFromOriginalQueue();
        } else {
            return popElementFromHelpQueue();
        }
    }

    /**
     * 将辅助队列的元素放入数据队列,并将辅助队列的最后一个元素出队
     */
    private static Object popElementFromOriginalQueue() {
        int size = helpQueue.size();
        for (int i = 1; i < size; i++) {
            originalQueue.add(helpQueue.poll());
        }
        return helpQueue.poll();
    }

    /**
     * 将数据队列的元素放入辅助队列,并将数据队列的最后一个元素出队
     */
    private static Object popElementFromHelpQueue() {
        int size = originalQueue.size();
        for (int i = 1; i < size; i++) {
            helpQueue.add(originalQueue.poll());
        }
        return originalQueue.poll();
    }

}

输出结果:

入栈的元素:
1 2 3 4 5 
出栈的元素:
5 4 3 2 1 

标签:size,队列,元素,十二,int,static,数据结构,originalQueue
来源: https://blog.csdn.net/u010647035/article/details/88778512

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有