什么是队列:与栈的LIFO不同,队列遵循的是先进先出,First-in First-out原则。生活中的排队与打印机打印任务都是队列的运用。
队列的代码实现:
class Queue:
def __int__(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)
队列的运用:
1)热土豆问题:输入一个含有n个名字的数组names,一个整数num。循环num次,每次循环都将第首排到队尾,num次后删除队首,直到最后队列中只有一个name,输出最后的人名
思路:直接按照题目意思创建一个队列,依次将队首排到队尾,num次后删除队首,最后只剩一个name时输出name
代码实现:
from 包.Queue1 import Queue
def hotPotato(names,num):
names_queue = Queue()
for name in names: #导入名字到队列中
names_queue.enqueue(name)
while names_queue.size() > 1: #测队列长度
for i in range(num):
names_queue.enqueue(names_queue.dequeue()) #从队首排到队尾
names_queue.dequeue() #删除队首
return names_queue.dequeue()
print(hotPotato(['bill','jahn','yww','lwx','night'],4))