隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)類型,它的跟蹤原理類似于在超市收銀處排隊(duì),隊(duì)列里的的第一個人首先接受服務(wù)。新的元素通過入隊(duì)的方式添加到隊(duì)列的末尾,而出隊(duì)就是將隊(duì)列的頭元素刪除。

隊(duì)列
我們可以設(shè)置一個類,用列表來存放棧中元素的信息,利用列表的append()和pop()方法可以實(shí)現(xiàn)隊(duì)列的入隊(duì)enqueue和出隊(duì)dequeue的操作,上面棧一個元素每次出去是列表的最后一個,直接用list.pop()出棧,而出隊(duì)列每次是第一個,所以要用list.pop(0)出隊(duì)列。
Python代碼實(shí)現(xiàn)
class Queue():
"""
隊(duì)列:先進(jìn)先出
"""
def __init__(self, max_size):
self.max_size = max_size
self.front = -1
self.rear = -1
self.queue = []
# 入隊(duì)操作
def enqueue(self, ele):
if self.full():
raise Exception("queue is full")
else:
self.queue.append(ele)
self.rear = self.rear + 1
# 出隊(duì)操作
def dequeue(self):
if self.empty():
raise Exception("queue is empty")
else:
self.queue.pop(0)
self.front = self.front + 1
# 是否已滿
def full(self):
return self.rear - self.front + 1 == self.max_size
# 是否為空
def empty(self):
return self.front == self.rear
# 隊(duì)列大小
def size(self):
return len(self.queue)
# 根據(jù)下標(biāo)獲取目標(biāo)
def get(self, index):
return self.queue[index]
# 根據(jù)目標(biāo)獲取下標(biāo)
def index(self, item):
return self.queue.index(item)
# 展示隊(duì)列內(nèi)容
def showQueue(self):
print(self.queue)
q = Queue(10)
# print(q.empty())
for i in range(8):
q.enqueue(i)
# print(q.full())
print(q.showQueue())
for i in range(4):
q.dequeue()
print(q.showQueue())
# print(q.size())