「算法」如何用栈实现队列

本文介绍了一种使用两个栈来模拟队列操作的方法。通过将一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。详细解释了如何通过栈的特性实现队列的先入先出原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方关注,每天学习一个java知识点

原创: 小灰 程序员小灰


「算法」如何用栈实现队列


「算法」如何用栈实现队列


————— 第二天 —————



「算法」如何用栈实现队列


「算法」如何用栈实现队列




「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列




「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列


————————————



「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列


栈的特点是先入后出,出入元素都是在同一端(栈顶):

入栈:


「算法」如何用栈实现队列


出栈:


「算法」如何用栈实现队列


队列的特点是先入先出,出入元素是在不同的两端(队头和队尾):

入队:


「算法」如何用栈实现队列


出队:


「算法」如何用栈实现队列


既然我们拥有两个栈,那么我们可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。


「算法」如何用栈实现队列



「算法」如何用栈实现队列


「算法」如何用栈实现队列


队列的主要操作无非有两个:入队和出队。

在模拟入队操作时,每一个新元素都被压入到栈A当中。

让元素1 “入队”:


「算法」如何用栈实现队列


「算法」如何用栈实现队列

让元素2 “入队”:


「算法」如何用栈实现队列


「算法」如何用栈实现队列


让元素3 “入队”:


「算法」如何用栈实现队列


「算法」如何用栈实现队列

这时候,我们希望最先“入队”的元素1“出队”,需要怎么做呢?

让栈A中的所有元素按顺序出栈,再按照出栈顺序压入栈B。这样一来,元素从栈A弹出并压入栈B的顺序是3,2,1,和当初进入栈A的顺序1,2,3是相反的:

「算法」如何用栈实现队列

此时让元素1 “出队”,也就是让元素1从栈B弹出:


「算法」如何用栈实现队列


让元素2 “出队”:


「算法」如何用栈实现队列



「算法」如何用栈实现队列


「算法」如何用栈实现队列


让元素4 “入队”:


「算法」如何用栈实现队列


「算法」如何用栈实现队列

此时的出队操作仍然从栈B弹出元素。

让元素3 “出队”:


「算法」如何用栈实现队列



「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列

让元素4 “出队”:


「算法」如何用栈实现队列


「算法」如何用栈实现队列




「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列

「算法」如何用栈实现队列



「算法」如何用栈实现队列


「算法」如何用栈实现队列


「算法」如何用栈实现队列


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值