用两个栈实现队列(LeetCode)算法题
创始人
2025-05-31 13:10:16

直接进入主题

a73849e3266f4b5c8c23e9851d2947dd.png

a831dad00e684d77ac0ebbc4666bb68b.png 

就是这样了,如果没有仔细看题的话,请回去再仔细看一下

下面开讲

先讲思路在来代码

首先我们想一下队列的性质,队列是先进先出,而栈是后进先出,所以如果想要用栈实现队列,那么一个栈肯定是不行的,所以我们定义两个栈,我们来看一下,我们可以定义一个入栈一个出栈

9e15983eee95497080157078c066a3f0.png 

就是这样,我们看一下接下来要怎么做,我们目前有两个栈,根据名字,大家也多少猜出来了,所以我们可以这样,一个栈用来入数据,另一个用来出数据

我们看一下

888b95098ba349118235c8eecfa87669.png 

我们如果要入5个数据1 2 3 4 5

那么我们就直接入到Push栈中

看一下

4a819a8b08594ca382b1751693fbe0e4.png 

就是这样,那么下面如果我们想要出怎么办?而且出去的顺序还是 按照插入顺序出,就是先入先出,所以我们可以把Push栈中的数据给push到Pop栈中

664884f77742499e90228eaf48049869.png 

就是这样所以我们就可以出栈了,那么如果我们还想插入数据怎么做,我们可以继续直接插入到Push栈中

6eb39efedf53413b9f3e071af69972df.png 

所以我们可以直接插入进去,那么如果我们想出呢?

如果我们的Pop栈不为空的话,那我们就是继续直接出,如果Pop栈为空的话就把Push栈中的数据push到Pop栈就可以继续出

Ok这就是思路,所以我们下面看一下代码

13769e4da4e243a596e34dd656ccccb4.png 

首先我们定义一个自己的queue,这个里面有两个栈,一个Push和Pop

下面在看一下

 由于上面的是匿名结构体,所以只能用一次,所以我们需要malloc一个这个类型的结构体

13803de30304419c92e60d2ce077f5c0.png

我们malloc出来以后,我们在调用栈初始化函数,初始化里面的两个栈,最后返回就可以了

f1355292c751424090c3f8ee55a7db01.png 

下面我们看一下如何判断空,如果两个栈都为空,才算是空

下面看一下Push

2b350c01ed5e4af795ed32d234935cf7.png 

这个Push就是直接向Push栈里面插入就可以了

主要是Pop

98d42941970b4d9db521403b63096012.png 

我们看一下Pop,这个Pop的话,就是首先判断是不是为空,如果为空的话,当然是不能Pop的,然后如果我们的Pop栈为空的话,我们就要把Push栈中的数据放到Pop栈中,然后才能Pop,之后就是肯定是有数据的,所以我们记录一下他的Top,然后再Pop掉,就可以了,最后就返回记录的数据

下面看一下Peek,这个就是看队头的数据,这里队头的数据就是Pop栈中的Top数据,所以还是和Pop前面一样,所以我们需要判断Pop栈是否为空,如果为空就是需要转移数据,然后再直接返回Top就可以了

5a467fe4f1ec43279acd59ed6509a1c0.png 

下面在看一下最后的就是释放函数

654fa05958384f40b0705398226c8a36.png 

就是直接释放两个栈里面malloc的空间就可以了

 

相关内容

热门资讯

宠物猫哪里买(宠物猫哪里买便宜... 今天给各位分享宠物猫哪里买的知识,其中也会对宠物猫哪里买便宜进行解释,如果能碰巧解决你现在面临的问题...
长期寄存行李,选择行李寄存平台... 今天给各位分享长期寄存行李,选择行李寄存平台还是迷你仓?的知识,其中也会对寄存行李的平台进行解释,如...
loncin是什么牌子的摩托车... 本篇文章极速百科给大家谈谈loncin是什么牌子的摩托车?conniebabyt,以及colove是...
地名的由来(成都地名的由来) ... 今天给各位分享地名的由来的知识,其中也会对成都地名的由来进行解释,如果能碰巧解决你现在面临的问题,别...
别逗我!旧手机竟然可以改成导航... 今天给各位分享别逗我!旧手机竟然可以改成导航仪、行车记录仪、单反...的知识,其中也会对旧手机改造导...
东风风光580智尚版空调异味应... 本篇文章极速百科给大家谈谈东风风光580智尚版空调异味应该怎么办,以及东风风光580空调进风口位置在...
20国集团有哪些国家(20国集... 今天给各位分享20国集团有哪些国家的知识,其中也会对20国集团有哪些国家地图进行解释,如果能碰巧解决...
速腾1.4T落地价最低多少钱?... 本篇文章极速百科给大家谈谈速腾1.4T落地价最低多少钱?,以及2023款速腾14t落地价最低多少钱对...
日产欧产美韩系列区别(一级二级... 本篇文章极速百科给大家谈谈日产欧产美韩系列区别,以及一级二级调色大片区区别大吗对应的知识点,希望对各...
张家口市一中(张家口市一中是初... 本篇文章极速百科给大家谈谈张家口市一中,以及张家口市一中是初中还是高中对应的知识点,希望对各位有所帮...
5寸照片规格是多少(5寸照片是... 今天给各位分享5寸照片规格是多少的知识,其中也会对5寸照片是多大?进行解释,如果能碰巧解决你现在面临...
长安UNI-T长安UNI-T最... 今天给各位分享长安UNI-T长安UNI-T最新报价-图片-参数的知识,其中也会对长安unit太平洋汽...
袁隆平是哪里人什么身份(袁隆平... 今天给各位分享袁隆平是哪里人什么身份的知识,其中也会对袁隆平是哪里人啊进行解释,如果能碰巧解决你现在...
板栗怎么去皮和壳(板栗怎么去皮... 今天给各位分享板栗怎么去皮和壳的知识,其中也会对板栗怎么去皮和壳小妙招10个进行解释,如果能碰巧解决...
异想天开是什么意思(异想天开是... 本篇文章极速百科给大家谈谈异想天开是什么意思,以及异想天开是什么意思指什么生肖对应的知识点,希望对各...
中石油加油卡如何办理?中石油油... 本篇文章极速百科给大家谈谈中石油加油卡如何办理?中石油油卡怎么办理优惠最高,以及中石油加油卡在哪办理...
北京市的10大汽车客运站一览(... 本篇文章极速百科给大家谈谈北京市的10大汽车客运站一览,以及北京汽车客运总站对应的知识点,希望对各位...
手机上网费是什么意思(手机上网... 今天给各位分享手机上网费是什么意思的知识,其中也会对手机上网费是什么意思 手机上网费的意思进行解释,...
柴油版的轿车有哪几款(柴油版轿... 本篇文章极速百科给大家谈谈柴油版的轿车有哪几款,以及柴油版轿车有哪些车型对应的知识点,希望对各位有所...
贾跃亭微博公布法拉第未来V9,... 本篇文章极速百科给大家谈谈贾跃亭微博公布法拉第未来V9,或专为中国市场打造,以及贾跃亭 法拉第未来对...
火山岩浆是什么物质(火山岩浆是... 今天给各位分享火山岩浆是什么物质的知识,其中也会对火山岩浆是什么物质组成的进行解释,如果能碰巧解决你...
caac是什么航空公司(中国十... 今天给各位分享caac是什么航空公司的知识,其中也会对中国十大航空排名进行解释,如果能碰巧解决你现在...
加满一箱油要多花9元了!车主们... 今天给各位分享加满一箱油要多花9元了!车主们要面对更大的经济压力...的知识,其中也会对加满一箱油要...
芾字怎么读(尧字怎么读) 芾字... 今天给各位分享芾字怎么读的知识,其中也会对尧字怎么读进行解释,如果能碰巧解决你现在面临的问题,别忘了...
常用的旅行箱行李箱忘记密码解锁... 今天给各位分享常用的旅行箱行李箱忘记密码解锁方法的知识,其中也会对旅行箱忘记密码怎么解锁进行解释,如...
世嘉世嘉最新报价-图片-参数(... 本篇文章极速百科给大家谈谈世嘉世嘉最新报价-图片-参数,以及世嘉百度百科对应的知识点,希望对各位有所...
紫河车是什么(婴胎紫河车是什么... 本篇文章极速百科给大家谈谈紫河车是什么,以及婴胎紫河车是什么对应的知识点,希望对各位有所帮助,不要忘...
奇瑞集团旗下品牌有哪些(奇瑞公... 今天给各位分享奇瑞集团旗下品牌有哪些的知识,其中也会对奇瑞公司旗下品牌有哪些进行解释,如果能碰巧解决...
嗥鸣的意思嗥鸣是什么意思(嗥鸣... 今天给各位分享嗥鸣的意思嗥鸣是什么意思的知识,其中也会对嗥鸣的意思是什么?进行解释,如果能碰巧解决你...
怎么查车辆违章记录,违章记录查... 本篇文章极速百科给大家谈谈怎么查车辆违章记录,违章记录查询怎么查,以及如何查询车辆违章?对应的知识点...