【从零开始学算法】数据结构之队列

什么是队列:与栈的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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值