彻底搞懂双端队列及输入/输出受限的双端队列
文章目录双端队列相关概念双端队列应用设有一个双端队列,元素进入该队列的顺序是1,2,3,4试分别求出满足下列条件的输出序列。1.不可能通过输入受限的双端队列输出的序列是?2.不可能通过输出受限的双端队列输出的序列是?3.既不能由输入受限的双端队列得到,也不能由输出受限的双端队列的输出序列?双端队列相关概念双端队列:两端都可以进行入队和出队操作的队列。栈:限制其一端既不允许插入也不允许删除。...
文章目录
双端队列相关概念
双端队列:两端都可以进行入队和出队操作的队列。
栈:限制其一端既不允许插入也不允许删除。
普通队列:限制其一端不允许插入,而限制另一端不允许删除。
输入限制的双端队列:限制一端只能进行删除操作,而另一端不做限制,也就是说插入(输入)操作受到了限制。
输出限制的双端队列:限制一端只能进行插入操作,而另一端不做限制,也就是说删除(输出)操作受到了限制。
双端队列应用
设有一个双端队列,元素进入该队列的顺序是1,2,3,4试分别求出满足下列条件的输出序列。
1.不可能通过输入受限的双端队列输出的序列是?
先使左端既不能输入,也不能输出,即成了一个栈,看此时不可能的输出序列有10种。
现在把左端的限制重新放开,就可以导出这10种中的一部分,剩下的就是不可导出的部分了。
下面一第一组1、4、2、3
输出序列为例说明:
注:其中I代表输入操作,OL代表从左端输出,OR代表从右端输出。
显然第一组是可以输出的,其他同理就不在此赘述了。
下面再以第八组4、2、1、3
为例说明:
显然4输出后,无论从左端还是右端都无法输出2,所以这组不可输出。
同理第九组也不可输出。
所以最后不可能通过输入受限的双端队列输出的序列是第八组4、2、1、3
和第九组4、2、3、1
2.不可能通过输出受限的双端队列输出的序列是?
与第一问同理,先使左端既不能输入,也不能输出,即成了一个栈,看此时不可能的输出序列有10种。
下面还是以第一组1、4、2、3
输出序列为例说明:
由于2先于3出队,而且只能从右端输出,所以3只能从左端入队。
显然第一组是可以输出的,其他同理就不在此赘述了。
下面再以第七组4、1、3、2
为例说明:
显然1输出后,本应先输出的3却只能跟在2后边输出,所以这组不可输出。
同理第九组也不可输出。
所以最后不可能通过输出受限的双端队列输出的序列是第七组4、1、3、2
和第九组4、2、3、1
3.既不能由输入受限的双端队列得到,也不能由输出受限的双端队列的输出序列?
只有第九组4、2、3、1
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)