0
点赞
收藏
分享

微信扫一扫

2.2_queue_队列

芭芭蘑菇 2022-02-11 阅读 107
class Queue(object):

    def __init__(self):
        self.queue = []

    def enqueue(self, element):
        """队尾添加数据"""
        self.queue.insert(0, element)

    def dequeue(self):
        """队首移除数据"""
        if not self.is_empty():
            return self.queue.pop()
        else:
            return None

    def qsize(self):
        return len(self.queue)

    def is_empty(self):
        return self.qsize() == 0

 

栈的应用: 

def hot_potato(name_list, num):
    """热土豆问题 (约瑟夫问题)"""

    q = Queue()

    for name in name_list:
        q.enqueue(name)

    while q.qsize() > 1:
        for i in range(num):
            # 队首人出队,立刻在队尾入队,即完成一次传递
            q.enqueue(q.dequeue())
        # 重复 num 次后,队首的人淘汰
        q.dequeue()

    return q.dequeue()

 

举报

相关推荐

0 条评论