![数据结构(C语言实现)](https://wfqqreader-1252317822.image.myqcloud.com/cover/699/43806699/b_43806699.jpg)
上QQ阅读APP看书,第一时间看更新
3.4.5* 双端队列
双端队列是一种特殊的队列,它是在线性表的两端对插入和删除操作限制的线性表。双端队列可以在队列的任何一端进行插入和删除操作,而一般的队列则要求在一端插入元素,在另一端删除元素。如图3.30所示。
![](https://epubservercos.yuewen.com/2EFA35/23083815801896206/epubprivate/OEBPS/Images/97_02.jpg?sign=1738883319-Xty0AdvlN0VLIAjgFpsv6mw0hdPVjCSD-0-8c47e8c159dd448008e178602571f8d8)
图3.30 双端队列
其中,end 1和end 2分别是双端队列的指针。
在实际应用中,还有输入受限和输出受限的双端队列。输入受限的双端队列指的是只允许在队列的一端进行插入元素,两端都可以删除元素的队列。输出受限的双端队列指的是只允许在队列的一端进行删除元素,两端都可以插入元素的队列。
双端队列是一个可以在任何一端进行插入和删除操作的线性表,现采用一个一维数组作为双端队列的数据存储结构,双端队列为空的状态如图3.31所示,在队列左端元素a,b,c依次入队,在队列右端元素d,e依次入队之后,双端队列的状态如图3.32所示。
![](https://epubservercos.yuewen.com/2EFA35/23083815801896206/epubprivate/OEBPS/Images/97_03.jpg?sign=1738883319-qRO7cBxNYHvHldBaih1ofhUkuWVsbom9-0-f5a4c15e50ed07adee0b5bd5552f1900)
图3.31 双端队列初始状态
![](https://epubservercos.yuewen.com/2EFA35/23083815801896206/epubprivate/OEBPS/Images/97_04.jpg?sign=1738883319-zr2VYnFEh02qpxzHnWgSx7c9LIOmUlEP-0-27d1234490c685df8100773364991aa0)
图3.32 双端队列插入元素之后