博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用俩个栈实现队列
阅读量:6246 次
发布时间:2019-06-22

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

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
 
思路:
栈是先进后出的结构,而队列是先进先出的结构,题目中给出俩个栈,一个栈只能完成特定的操作,如何才能利用俩个栈让元素能够先进去先出来?
一个栈元素是后出,那么叠加式把一个栈放入另一个栈中,该元素的出入顺序就变成了先入先出。
 
注意:这里有一个细节很重要
 
if(stack2.empty()){...}     这句话的意思就是在stack2的元素没有全部出栈的情况下,是不够执行入栈操作的,我在第一次做的时候就未加这句话,结果出现下面错误
测试用例:
["PSH1","PSH2","PSH3","POP","POP","PSH4","POP","PSH5","POP","POP"]
对应输出应该为:
1,2,3,4,5
你的输出为:
1,2,4,5,3
 
由于你的stack2没有全部出栈就又重新入栈了,则导致当前“队列”出队列元素就是永远都是你的新入栈元素,结果就会错误。
例如输入样例为上(很尴尬,当时只想到了判断栈1空没有想到这里,看了测试结果恍然大悟)
 
 
1 import java.util.Stack; 2 public class Solution { 3     Stack
stack1 = new Stack
(); 4     Stack
stack2 = new Stack
(); 5       6     public void push(int node) { 7         stack1.push(node); 8     } 9      10     public int pop() {11         if(stack1.empty()&&stack2.empty()){12            System.out.println("The queue is empty!");13         }14         if(stack2.empty()){ 15             while(!stack1.empty()){16                 stack2.push(stack1.pop());17             }18 }19         return stack2.pop();20     }21 }

 

 

转载于:https://www.cnblogs.com/Octopus-22/p/9419677.html

你可能感兴趣的文章
75. Sort Colors(按颜色进行排序)(leetcode)
查看>>
4_文件与目录权限
查看>>
SQLServer 2008 R2 清空日志文件
查看>>
总结第八天
查看>>
向空对象添加数据以及for in 遍历
查看>>
基础才是重中之重~理解内存中的栈和堆
查看>>
js错误问题 The operation is insecure.
查看>>
第四章 表达式
查看>>
Python数值计算:一 使用Pylab绘图(3)
查看>>
python爬虫知识点总结(十八)Scrapy框架基本使用
查看>>
限制textarea的字数(包括复制粘贴)
查看>>
ArcGIS Server中的各种服务
查看>>
HIVE: Transform应用实例
查看>>
Some examples about how to write anonymous method and lambda expression
查看>>
linux下可以禁用的一些服务
查看>>
aria2的下载配置
查看>>
C++扬帆远航——14(求两个数的最大公约数)
查看>>
django-blog-zinna搭建个人blog
查看>>
as3 文本竖排效果实现
查看>>
Window下Eclipse+Tomcat远程调试
查看>>