博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-队列与栈之间的转换
阅读量:6321 次
发布时间:2019-06-22

本文共 2712 字,大约阅读时间需要 9 分钟。

  队列:火车过隧道。。。火车头先进隧道先出隧道、、、先进先出

  栈:桶里倒水再倒出。。。先进后出。。。

两个堆栈实现队列与两个队列实现堆栈

package Test2016.test;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class Test20160329 {    public static void main(String[] args) {            /**         * @desc 两个堆栈实现队列         * @idea 堆栈:先进后出,队列:先进先出         * */        MyQueue myQueue = new MyQueue();                System.out.println("入队列顺序:");        for (int i = 1; i <= 10; i++) {            System.out.print(i + " ");            myQueue.push_q(i);        }                System.out.println("\n用堆栈实现【队列】弹出:");        for (int i = 0; i < 10; i++) {            System.out.print(myQueue.pop_q() + " ");        }                System.out.println("\n######################");                /**         * @desc 两个队列实现堆栈         * @idea 堆栈:先进后出,队列:先进先出         * */        MyStack myStack = new MyStack();                System.out.println("入堆栈顺序:");        for (int i = 1; i <= 10; i++) {            System.out.print(i + " ");            myStack.push_s(i);        }                System.out.println("\n用队列实现【堆栈】弹出:");        for (int i = 0; i < 10; i++) {            System.out.print(myStack.pop_s() + " ");        }            }}class MyQueue {        private Stack
s1 = null; private Stack
s2 = null; public MyQueue() { s1 = new Stack
(); s2 = new Stack
(); } public Integer push_q(Integer p) { s1.push(p); return p; } public Integer pop_q() { Integer res = null; if (!s2.isEmpty()) { res = s2.pop(); } else { while (!s1.isEmpty()) { res = s1.pop(); s2.push(res); } if (!s2.isEmpty()) { res = s2.pop(); } } return res; }}class MyStack { private Queue
q1 = null; private Queue
q2 = null; public MyStack() { q1 = new LinkedList
(); q2 = new LinkedList
(); } public Integer push_s(Integer p) { q1.add(p); return p; } public Integer pop_s() { Integer res = null; boolean flag = true; //标识变量 if (q2.size() > 0 && flag == true) { flag = false; while (q2.size() > 0) { if (q2.size() > 0) { res = q2.remove(); q1.add(res); } } q1.remove(res); } else if (q1.size() > 0 && flag == true) { while (q1.size() > 0) { if (q1.size() > 0) { res = q1.remove(); q2.add(res); } } q2.remove(res); } return res; }}

程序运行输出:

入队列顺序:1 2 3 4 5 6 7 8 9 10 用堆栈实现【队列】弹出:1 2 3 4 5 6 7 8 9 10 ######################入堆栈顺序:1 2 3 4 5 6 7 8 9 10 用队列实现【堆栈】弹出:10 9 8 7 6 5 4 3 2 1

 

转载于:https://www.cnblogs.com/JimLy-BUG/p/5274587.html

你可能感兴趣的文章
17-python-主要内置函数
查看>>
19-python-迭代器、生成器
查看>>
用DataGridView导入TXT文件,并导出为XLS文件
查看>>
maven3常用命令、java项目搭建、web项目搭建
查看>>
1503. [NOI2004]郁闷的出纳员【平衡树-splay】
查看>>
Oracle 2
查看>>
vue js 判断鼠标滚动到底部 数据更新
查看>>
一个ios的各种组件、代码分类,供参考
查看>>
Shell脚本学习之sed详解
查看>>
bugDone
查看>>
Go:json(序列化、反序列化)
查看>>
Python 类的用法
查看>>
动态链接和静态链接的区别
查看>>
解决Python开发过程中依赖库打包问题的方法
查看>>
Git学习系列之命令大全(二)
查看>>
java基础(五)-----关键字static
查看>>
什么是PLI?
查看>>
[UIKit学习]04.关于HUD提示框,定时任务、开发关于资源常见问题
查看>>
文摘:OUTER JOIN
查看>>
http://git.oschina.net/chunanyong/springrain
查看>>