基础数据结构-队列

定义

有序集合,添加操作发生在“尾部”,移除操作则发生在“头部”。
新元素从尾部进入队列,然后一直向前移动到头部,直到成为下一个被移除的元素。
最新添加的元素必须在队列的尾部等待,在队列中时间最长的元素则排在最前面。

这种排序原则被称作FIFO (first-in first-out),即先进先出,也称先到先得。
好的队列只允许一头进,另一头出,不可能发生插队或者中途离开的情况。

实现 

"""
如前所述,队列是元素的有序集合,添加操作发生在其尾部,移除操作则发生在头部。
    Queue() 创建一个空队列。它不需要参数,且会返回一个空队列。
    enqueue(item) 在队列的尾部添加一个元素。它需要一个元素作为参数,不返回任何值。
    dequeue() 从队列的头部移除一个元素。它不需要参数,且会返回一个元素,并修改队列的内容。
    isEmpty() 检查队列是否为空。它不需要参数,且会返回一个布尔值。
    size() 返回队列中元素的数目。它不需要参数,且会返回一个整数。
"""

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):
        self.items.pop()

    def size(self):
        return len(self.items)

应用

TODO

传土豆游戏(等价于约瑟夫问题)

"""
在这个游戏中,孩子们围成一圈,并依次尽可能快地传递一个土豆。在某个时刻,停止传递,
此时手里有土豆的孩子就得退出游戏,直到剩下一个孩子。

使用队列来模拟一个环,假设握着土豆的孩子在队列头部。在模拟过程中,程序将这个孩子的
名字移出队列,然后立刻插入队列尾部。随后这个孩子会一直等待,直到再次到达队列的头部。
在出列和入列num次之后,此时位于头部的孩子出局,新一轮游戏开始。如此反复,直到队列中
只剩下一个名字,此时队列大小为1.
"""

打印任务

"""
学生向共享打印机发送打印请求,这些打印任务被存在一个队列中,并且按照先到先得的顺序执行。
这样的设定可能导致很多问题。其中最重要的是,打印机能否处理一定量的工作。
如果不能,学生可能会由于等待过长时间而错过要上的课。

考虑计算机科学实验室里的这样一个场景:在任何给定的一小时内,实验室里都有约10个学生。
他们在这一小时内最多打印2次,并且打印的页数从1到20不等。实验室的打印机比较老旧,
每分钟只能以低质量打印10页。可以将打印质量调高,但是这样做会导致打印机每分钟只能打印5页。
降低打印速度可能导致学生等待过长时间。那么,应该如何设置打印速度呢?

...
需要一些概率学知识。
模拟的本质。在常用参数已知的情况下尽可能准确地模拟。
这些问题都能通过修改本例中的模拟程序来解答。但是,模拟的准确度取决于它所基于的假设和参数。
真实的打印任务数量和学生数目是准确构建模拟程序必不可缺的数据。
"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值