数据结构之队列(Queue)
使用类来实现队列,采用list容纳queue的数据项,将列表首端作为队列尾端,列表尾端作为队列首端;
class Queue():
def __init__(self):
self.items = []
def enqueue(self,item):
self.items.insert(0,item)
def size(self):
return len(self.items)
def dequeue(self):
return self.items.pop()
def isEmpty(self):
return len(self.items) == 0
知识点:
1.先入先出(FIFO);
2.只有一个入口和一个出口,不允许数据项直接插入,也不允许从中间移除数据项;
使用队列解决“热土豆”问题
1.保证队首(即列表的末端)始终为持有土豆的人;
2.游戏开始时,只需让队首的人出队,再入队即可,这完成一次传递;
3.传递达到指定次数num后,出队的人不再入队,直至队列中只剩1人。
from Queue import Queue
def hot_Potato(namelist,num):
potato = Queue()
for name in namelist:
potato.enqueue(name)
while potato.size() > 1:
for i in range(num):
de_name = potato.dequeue()
potato.enqueue(de_name)
potato.dequeue()
return potato.dequeue()
print(hot_Potato(['BIll',"David","Susan","Jane","Kent","Brad"],7))