队列
一、概念
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。
二、队列的特点:先进先出
代码实现
class Queue():
def __init__(self):
"""
初始化队列
"""
self.items = []
def enqueue(self, item):
"""
入队
:param item:
:return:
"""
self.items.insert(0, item)
def dequeue(self):
"""
出队
:return:
"""
return self.items.pop()
def size(self):
"""
队列元素个数
:return:
"""
return len(self.items)
def isEmpty(self):
"""
是否为空队列
:return:
"""
return self.items == []
if __name__ == '__main__':
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
# 1
# 2
# 3
# 队列这种数据结构的特点:先进先出
两个队列实现栈
q1 = Queue()
q2 = Queue()
lst = [1, 2, 3, 4, 5]
for i in lst:
q1.enqueue(i)
while q1.size() >= 1:
while q1.size() > 1:
q2.enqueue(q1.dequeue())
print(q1.dequeue())
q1, q2 = q2, q1
# 5
# 4
# 3
# 2
# 1