数据结构-3.7.双端队列

一.双端队列的三种形式:

双端队列也可以是只在一端删除和添加,此时就是栈;

双端队列在一端添加,另一端输出,此时就是队列;


二.判断输出序列合法性:

题目:若数据元素输入序列为1,2,3,4,则哪些输出序列是合法的,哪些是非法的?

共有24种排列方式:

1.双端队列只在一端删除和添加:此时双端队列也是栈

2,4,1,3不行,因为4出栈时说明3已经入栈了,下一个出栈的只能是3,而不是1。

下图红色标注的输出序列都不合法:

栈中合法的序列,双端队列中也一定合法。

2.双端队列只能一端插入,两端删除:

如果此时双端队列变为只能一端插入,两端删除时,栈中合法的序列在该双端队列中也一定合法,因此只需再验证栈中

不合法的序列就可以得知哪些序列在该双端队列合法:

比如4,3,2,1就不合法,因为4出去后,说明1,2,3已经进入,下一个出栈的要么是1(左边出),要么是3(右边出),

不可能是2出栈。

下图红色标注的输出序列都不合法:

3.双端队列只能一端删除,两端插入:

如果此时双端队列变为只能一端删除,两端插入时,栈中合法的序列在该双端队列中也一定合法,因此只需再验证栈中

不合法的序列就可以得知哪些序列在该双端队列合法:

比如出栈序列1,4,2,3,1先从左或者右进入再出去,4出栈时说明2,3已经进栈,逆推:如果出栈顺序是4,2,3,说明栈里的排列是3,2,4(注:出栈只能从一端出),进栈可以2先从左或者右进入,再3从左进栈,就形成3,2,最后4从右进栈,就形成了3,2,4,说明该出栈序列合法。

比如出栈序列4,1,3,2,逆推:由于出栈只能从一端出,因此栈里排列只能是2,3,1,4,显然错误,因为如果形成了1,4,那么左边必须是3,2,不可能是2,3,因为3比2后进栈(另一种思路:4出栈后,如果前面是1,那么1的前面只可能是2,不可能是3,因为3比2后进栈)

下图红色标注的输出序列都不合法:


三.总结:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值