数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈
来源:互联网 发布:通过intent传递数据 编辑:程序博客网 时间:2024/04/30 06:20
思路:
入栈操作:
- 直接对 queue_1 进行 add 操作
出栈操作:
- 若 queue_1 的长度 > 1,对 queue_1 进行 remove 操作,将这些数据放入 queue_2 中,直到 queue_1 只剩下一个元素为止
- queue_1 剩余的元素即为应该 出栈的元素, remove 操作
- 将 queue_2 中的元素放回到 queue_1 中
大致的示意图:
package com.dataStructure.stack;import java.util.LinkedList;import java.util.Queue;public class UseQueueToImplStack { private Queue<Integer> queue_1; private Queue<Integer> queue_2; private int count; public UseQueueToImplStack(){ queue_1 = new LinkedList<>(); queue_2 = new LinkedList<>(); count = 0; } public boolean isEmpty(){ return count == 0; } public void push(int num){ queue_1.add(num); count++; } public int pop(){ while (queue_1.size() > 1) queue_2.add(queue_1.remove()); int result = queue_1.remove(); count--; while (!queue_2.isEmpty()) queue_1.add(queue_2.remove()); return result; } public static void main(String[] args){ UseQueueToImplStack stack = new UseQueueToImplStack(); stack.push(6); stack.push(2); stack.push(1); System.out.print(stack.pop() + " "); stack.push(3); System.out.print(stack.pop() + " "); stack.push(5); System.out.print(stack.pop() + " "); stack.push(7); while (!stack.isEmpty()){ System.out.print(stack.pop() + " "); } }}
阅读全文
0 0
- 数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈
- 数据结构与算法分析(Java 语言描述)(35)—— 使用两个栈实现一个队列
- (数据结构与算法分析 四)------数组循环队列的实现( Java语言描述)
- 数据结构与算法(Java语言描述)--栈和队列
- 数据结构与算法分析(Java语言描述)(30)—— 有权图的实现
- 队列 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 优先队列(堆) - C语言实现(摘自数据结构与算法分析 C语言描述)
- 优先队列(堆) - C语言实现(摘自数据结构与算法分析 C语言描述)
- 队列 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 队列 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 优先队列(堆) - C语言实现(摘自数据结构与算法分析 C语言描述)
- 数据结构与算法之—两个栈实现一个队列
- (数据结构与算法分析 七)------优先队列中的二叉堆的实现( Java语言描述)
- 读书笔记:数据结构与算法分析(Java语言描述)——数据结构概论
- 《数据结构与算法分析——java语言描述(第二版)》中树实现的一点思考
- 数据结构与算法分析(Java语言描述)(28)—— 使用 dfs 求两节点间的路径
- 数据结构与算法分析——Java语言描述
- 《数据结构与算法分析—Java语言描述》pdf
- 设计模式【依赖倒转原则】
- IIS-ASP入门(一)环境配置
- Web开发踩过的坑
- ue4 蓝图 转换 c++ 类变量付空值问题
- hotoshop入门基础
- 数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈
- 小程序手机预览详情界面一直加载或者WebviewId
- ####好好好¥#####spark Streaming 技术内幕 : 从DSteam到RDD全过程解析
- pyspark之DataFrame学习【dataFrame应用实例】(4)
- TOJ3772 Rupxup's Math Problem
- 2017最新Kotlin快速入门进阶
- IntelliJ IDEA使用手册——更改字体和颜色
- php数组与xml的相互转化
- mysql基础