什么是队列?
队列是一种数据结构,一系列有顺序对象的集合。就像我们排队一样,队列的特征是先进先出,从队尾入队,从队首出队。由于队尾的特性,我们只能对队列的首尾两个数据进行操作。下表列出队列的一些操作:
方法 | 操作 |
---|---|
Queue() | 创建一个空队列 |
enqueue(data) | 将数据添加到队尾,无返回值 |
dequeue() | 删除队首数据 |
isempty() | 判断队列是否为空,返回bool值 |
size() | 返回队列数据个数 |
python实现队列的代码如下:
class Queue(object):
# 队列初始化
def __init__(self):
self.datas = []
#判断是否为空
def isempty(self):
return self.datas == []
#入队
def enqueue(self,data):
self.datas.insert(0,data)
#出队,返回队尾值
def dequeue(self):
return self.datas.pop()
#返回队列规模
def size(self):
return len(self.datas)
来看一个实例应用,传花游戏。一群人围成一圈传n次花,传完n次后,拿花的人出圈,游戏进行到只剩最后一个人。
来看代码实现
def hotpotato(namelist,num):
s = Queue()
for i in namelist:
s.enqueue(i)
while s.size() > 1:
for i in range(num-1):
s.enqueue(s.dequeue())
return s.datas[0]
if __name__ =="__main__":
s = ['sa','fa','ga','da']
print(hotpotato(s,3))
print(3)