第十九题:如何使用队列实现栈结构(Java)
2019-01-14 23:47
211 查看
版权声明:Please make the source marked https://blog.csdn.net/qq_31807385/article/details/86485687
题目要求:
如标题
代码实现与分析:
在图的深度优先遍历中,是需要使用栈结构来实现的,在面试中可能会被问到,如何仅用队列结构来实现图的深度优先遍历?
[code]package com.isea.brush; import java.util.LinkedList; import java.util.Queue; /** * 使用队列结构实现栈 * 实现思路: * 使用两个队列;data队列和help队列,数据永远只存在data队列中,入栈的时候全部进入data栈 * 出栈的时候,只要data栈中的元素个数大于1,就将data栈的数据全部放入到help栈中,返回data栈的 * 最后一个元素,然后交换help栈和data栈的引用。 */ public class TwoQueueStack { private Queue<Integer> data; private Queue<Integer> help; public TwoQueueStack() { data = new LinkedList<Integer>(); help = new LinkedList<Integer>(); } public void push(int value) { data.add(value); } public Integer pop() { if (data.isEmpty()) { throw new IllegalArgumentException("The Stack is empty..."); } while (data.size() > 1) { help.add(data.poll()); } int result = data.poll(); swap(); return result; } private void swap() { Queue<Integer> tmp = data; data = help; help = tmp; } public Integer peek() { if (data.isEmpty()) { throw new IllegalArgumentException("The stack is empty..."); } while (data.size() != 1) { help.add(data.poll()); } int result = data.poll(); help.add(result); swap(); return result; } }
相关文章推荐
- 数据结构——使用双端链表实现队列(java实现)
- 教你如何使用Java手写一个基于数组实现的队列
- java使用堆结构实现优先队列
- 【题目5】如何使用两个栈来实现一个队列
- 举例说明如何用java中的LinkedList实现队列
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- 马士兵 Java 第5章(1) 分别使用面向对象和面向结构(数组)的设计方法来实现“数三退一”
- java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码
- java使用阻塞队列实现生产者消费者模式
- Java实现队列结构的详细代码
- 使用java语言操作,如何来实现MySQL中Blob字段的存取
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 如何:使用TreeView控件实现树结构显示及快速查询
- java并发编程学习: 阻塞队列 使用 及 实现原理
- java redis使用之利用jedis实现redis消息队列
- java使用数组实现循环队列
- 如何使用JAVA实现数字水印
- 如何用java实现lucene(只使用,不求甚解版-_-")
- 数据结构(Data structure):使用双向链表实现队列(C语言)
- 数据结构之优先队列--二叉堆(Java实现)