模拟游戏开始,只需要将队首的人出队,随即再到队尾入队,算是一次传递。直到队列中只剩一人。
show me the code!
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self,item):
self.items.insert(0,item) # 队尾
def dequeue(self):
return self.items.pop() # 队尾
def size(self):
return len(self.items)
def hotPotato(namelist, num):
simqueue = Queue()
for name in namelist:
simqueue.enqueue(name) # 将所有人入队
while simqueue.size() > 1:
for i in range(num): # 这个是从0开始报数
simqueue.enqueue(simqueue.dequeue()) # 报了一轮数
simqueue.dequeue() # 去掉一个人
return simqueue.dequeue() # 剩下最后一个人
if __name__ == '__main__': # 测试
last_person = hotPotato(["Bill","David","Susan","Jane","Kent","Brad"],7)
print(last_person)