队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务。新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。

我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现队列的入队enqueue和出队dequeue的操作,上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列。
Python代码实现
class Queue():
"""
队列:先进先出
"""
def __init__(self, max_size):
self.max_size = max_size
self.front = -1
self.rear = -1
self.queue = []
# 入队操作
def enqueue(self, ele):
if self.full():
raise Exception("queue is full")
else:
self.queue.append(ele)
self.rear = self.rear + 1
# 出队操作
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
# 队列大小
def size(self):
return len(self.queue)
# 根据下标获取目标
def get(self, index):
return self.queue[index]
# 根据目标获取下标
def index(self, item):
return self.queue.index(item)
# 展示队列内容
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())
网友评论