C++队列模拟银行排队叫号(加州大学伯克利分校计算机专业数据结构与算法作业)
原题如下:大家可以根据题目自己做一遍,作为对基础的夯实和对C++学习的最佳实践。
说明:
1 这个题目的第一问老师给出了伪代码,伪代码是很关键的,因为这里面没有多线程技术。为了能够用最基本的C++语句完成多个队列的协作(等待队列,服务队列,完成队列)伪代码可以说给出了程序的骨架。
2 附加题的难度还是不小的,工作量要建立在第一问的框架和基础设施上,如果第一问的程序写的好,第二问就可以较顺利的进行,否则第二问的难度会比较大。本文给出的都是最为传统的解决方法,用 的也都是C++最为常见的用法。
3 因为这个题目是对队列的应用,所以老师要求队列这个容器必须自己实现,不能用标准库的队列,本文的队列是用的链式队列。
实现思路:本文的思路由各个类的名称就可以看出设计思路,对问题的拆分还是比较合理的,没有冗余代码,一气呵成。条理清晰,模块合理,各个类配合的还是比较舒畅的。欢迎有意见的朋友给出评论。
百度云下载 一个队列的场景:line = 1
百度云下载 两个队列的场景:line = 2
运行报告
可以看出两点:
1 队列越多:排队的最大长度越小,平均等待时间越小
2 服务越高效(服务时间越小):排队的最大长度越小,平均等待时间越小