博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《程序员代码面试指南》第一章 栈和队列 由两个栈组成的队列
阅读量:7123 次
发布时间:2019-06-28

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

题目

用两个栈实现队列,可以进行 add、poll、peek 操作

代码

/** * @Description:用两个栈实现队列 * @Author: lizhouwei * @CreateDate: 2018/4/5 10:44 * @Modify by: * @ModifyDate: */public class Chapter1_2 {    private Stack
stack01;//数据栈,压栈的数据 private Stack
stack02;//辅助栈,stack01的逆序 public Chapter1_2(){ stack01 = new Stack
(); //在new的时候 初始化stack01内存空间 stack02 = new Stack
(); //在new的时候 初始化stack02内存空间 } //队尾入 public void add(int value){ //将辅助栈中的元素转移到 01栈中,保证新的元素在以前元素的后面 while(!stack02.isEmpty()){ stack01.push(stack02.pop()); } stack01.push(value); } //队头出 public int poll(){ //如果01栈和02栈都为空,则说明 队列为空了 if(stack01.isEmpty() && stack02.isEmpty() ){ return -1; } //如果02不为空 则说明 是连续的出队列操作,此时所有的元素都在02栈中,直接出02栈即可 if(!stack02.isEmpty() ){ return stack02.pop(); } //02栈为空,将01栈中的元素转移到 02栈中,保证01最底部的元素在02的栈顶 while(!stack01.isEmpty()){ stack02.push(stack01.pop()); } return stack02.pop(); } //查看队头数据 public int peek(){ //如果02栈为空,则说明 队列为空了 if(stack02.isEmpty() ){ return -1; } return stack02.pop(); } public boolean isEmpty(){ //如果01栈和02栈都为空,则说明 队列为空了 return stack01.isEmpty() && stack02.isEmpty(); } //测试 public static void main(String[] args){ Chapter1_2 chapter = new Chapter1_2(); for(int i=10;i<20;i++) { chapter.add(i); } System.out.println(chapter.poll()); for(int i=30;i<40;i++) { chapter.add(i); } System.out.println(chapter.poll()); System.out.println(chapter.poll()); while(!chapter.isEmpty()){ System.out.print(chapter.poll()+" "); } }}

转载于:https://www.cnblogs.com/lizhouwei/p/8721416.html

你可能感兴趣的文章
Linux之父为过去的言行道歉,宣布离开社区反思
查看>>
使用Visual Studio Code进行Swift开发
查看>>
AWS Amplify Console:赋予应用程序快速部署的能力
查看>>
C#的未来:不可变变量
查看>>
Uber推出数据湖集成神器DBEvents,支持MySQL、Cassandra等
查看>>
InfoQ趋势报告:架构和设计领域技术演变详解
查看>>
揭秘码云:全球第二大代码托管平台的核心架构
查看>>
距离QCon纽约还有3个礼拜:新的演讲、播客节目和研讨会
查看>>
Spark Streaming中流式计算的困境与解决之道
查看>>
15条软件开发黄金定律
查看>>
TensorFlow发布1.12.0版本,改善XLA稳定性和性能
查看>>
红帽峰会2017第二天回顾:Jim Whitehurst对企业数字转型的两条建议
查看>>
NPM中混入了包含恶意后门的包
查看>>
IBM开源API微网关
查看>>
企业金融云存储建设之路
查看>>
SQL Server新一轮更新
查看>>
未来的C#之只读引用与结构体
查看>>
TypeScript发布3.2版本,改进元编程支持、新增BigInt
查看>>
服务部署如何做到高可用?这份“三级跳”秘籍送给你\n
查看>>
独家解读 | 滴滴机器学习平台架构演进之路
查看>>