队列:先进先出(FIFO)

添加操作发生在其尾部,移除操作发生在头部。

 

1.支持以下操作↓

·Queue()    创建一个空队列。它不需要参数,且会返回一个空队列

·enqueue(item)    在队列的尾部添加一个元素。它需要一个元素作为参数,不返回任何值。

·dequeue()      从队列的头部移除一个元素。它不需要参数,且会返回一个元素,并修改队列的内容。

·isEmpty()    检查队列是否为空。它不需要参数,且会返回一个布尔值。

·size()        返回队列中元素的数目。它不需要参数,且会返回一个整数。

 

2.实现:

"""队列的尾部在列表的位置0处"""

class Queue:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        """检查队列是否为空"""
        return self.items == []

    def size(self):
        """检查队列长度"""
        return len(self.items)

    def enqueue(self,item):
        """从队列尾部添加元素"""
        self.items.insert(0,item)

    def dequeue():
     """从队列头部移除元素"""
return self.items.pop()

 

3.应用一:传土豆

import Queue

def hotPotato(namelist,num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())

        simqueue.dequeue()


    return simqueue.dequeue()