队列
队列和栈比较类似,可以和博文:https://blog.csdn.net/weixin_42521211/article/details/88946748 参考学习。
队列的一个特性是:先进先出(First In First Out, FIFO),
python中,同样可以使用列表来存储队列的数据。通过创建一个队列类,便可以方便的对队列进行操作。主要有:
入队(In())
出队(Out())
清空队列(empty())
设置队列大小(setSize())
获取队尾位置(getEnd())等
python实现代码示例
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 1 15:41:12 2019
@author: mu
"""
class PyQueue: # 创建队列
def __init__(self,size=20):
self.queue = [] #
self.size = size # 队列大小
self.end = -1 # 队尾
# 设置队列大小
def setSize(self,size):
self.size = size
# 入队
def In(self,element):
if self.end <self.size-1:
self.queue.append(element)
self.end +=1
else:
raise QueueException('PyQueueFull') # 队满,引发异常
# 出队
def Out(self):
if self.end != -1:
element = self.queue[0]
self.queue = self.queue[1:]
self.end -= 1
return element
else:
raise QueueException('PyQueueEmpty') # 队空,抛出异常
# 获取队尾位置
def getEnd(self):
return self.end
# 清空队列
def empty(self):
self.queue = []
self.end = -1
class QueueException(Exception): #自定义异常类
def __init__(self,data):
self.data = data
def __str__(self):
return self.data
'''
主程序
'''
if __name__ == '__main__':
queue = PyQueue()
for i in range(10) : #入队
queue.In(i)
print('队尾位置:',queue.getEnd())
while queue.getEnd != -1:
print(queue.Out())
queue.empty() #清空队列
for i in range(20):
print(queue.Out()) #引发异常
题外记
和栈类似,实现很简易!