隊列 是一個抽象的數據結構,與堆棧有些相似。較對比於棧,隊列打開兩端。 一端總是用來插入數據(排隊),另一個是用來刪除數據(離隊)。 隊列使用先入先出的方法,即,第一存儲的數據項先被訪問。
- 隊列有兩端,入口端和出口端,數據只能從入口進入隊列。從出口離開隊列。因此也被稱爲FIFO表示先進先出 後進後出。
- 隊列可以使用數組,鏈表,指針和結構來實現。
雙端隊列(deque,全名double-ended queue),是一種具有隊列和棧的性質的數據結構。
雙端隊列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端隊列可以在隊列任意一端入隊和出隊。
# 隊列基於Python語言的實現
'''
隊列的基本方法:
enqueue(value) 入隊 添加新的元素到隊列中
dequeue() 出隊 從隊列中移除元素
peek() 得到在隊列最前面的元素 而不移除它
is_full() 檢查隊列是否存滿 沒有長度限制的隊列可不實現該方法
if_empty() 檢查隊列是否爲空
len() 返回都隊列內元素個數
travel() 遍歷隊列
'''
class Queue(object):
"""
隊列類
"""
def __init__(self):
"""
初始化
"""
self.__queue = []
def __len__(self):
"""
返回隊列長度
"""
return len(self.__queue)
def enqueue(self, value):
"""
入隊
"""
self.__queue.append(value)
def dequeue(self):
"""
出隊
"""
return self.__queue.pop(0)
def peek(self):
"""
返回隊列頂部元素
"""
return self.__queue[0]
def is_empty(self):
"""
檢測隊列是否爲空
"""
return self.__queue == []
def travel(self):
"""
遍歷隊列
"""
for val in self.__queue:
print(val)
if __name__ == '__main__':
que = Queue()
print(que.is_empty())
que.enqueue('a')
que.enqueue('b')
que.enqueue('c')
que.enqueue('d')
print(que.dequeue())
print(que.is_empty())
print(que.peek())
print(len(que))
que.travel()