C++队列模拟银行排队叫号

原题如下:大家可以根据题目自己做一遍,作为对基础的夯实和对C++学习的最佳实践。

说明:

1 这个题目的第一问老师给出了伪代码,伪代码是很关键的,因为这里面没有多线程技术。为了能够用最基本的C++语句完成多个队列的协作(等待队列,服务队列,完成队列)伪代码可以说给出了程序的骨架。

2 附加题的难度还是不小的,工作量要建立在第一问的框架和基础设施上,如果第一问的程序写的好,第二问就可以较顺利的进行,否则第二问的难度会比较大。本文给出的都是最为传统的解决方法,用 的也都是C++最为常见的用法。

3 因为这个题目是对队列的应用,所以老师要求队列这个容器必须自己实现,不能用标准库的队列,本文的队列是用的链式队列。

实现思路:本文的思路由各个类的名称就可以看出设计思路,对问题的拆分还是比较合理的,没有冗余代码,一气呵成。条理清晰,模块合理,各个类配合的还是比较舒畅的。欢迎有意见的朋友给出评论。

 

 

 

运行报告

可以看出两点:

1 队列越多:排队的最大长度越小,平均等待时间越小

2 服务越高效(服务时间越小):排队的最大长度越小,平均等待时间越小

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您解答这个问题。要模拟银行排队系统,我们可以使用队列来代表顾客排队队列。每当一个新的顾客来到银行,就会被加入到队列的末尾。当柜员准备好为下一个顾客服务,就会将队列中的第一个顾客叫到柜台。以下是使用Python实现队列模拟银行排队系统的示例代码: ```python class Queue: def __init__(self): self.items = [] def is_empty(self): return not bool(self.items) def enqueue(self, item): self.items.append(item) def dequeue(self): return self.items.pop(0) def size(self): return len(self.items) class Bank: def __init__(self): self.queue = Queue() self.number = 0 def new_customer(self): self.number += 1 self.queue.enqueue(self.number) def serve_customer(self): if self.queue.is_empty(): print("No customers to serve.") else: customer = self.queue.dequeue() print("Now serving customer", customer) def show_queue(self): print("Current queue:", self.queue.items) # Example usage bank = Bank() bank.new_customer() bank.new_customer() bank.new_customer() bank.show_queue() bank.serve_customer() bank.show_queue() ``` 在这个示例代码中,我们首先实现了一个Queue类来代表队列。然后我们实现了一个Bank类来模拟银行,其中包含了三个方法: - new_customer:每次调用这个方法,会为新的顾客生成一个码,并将其加入到队列的末尾。 - serve_customer:每次调用这个方法,会将队列中的第一个顾客叫到柜台处理。如果队列为空,则输出“No customers to serve.”的提示信息。 - show_queue:每次调用这个方法,会输出当前队列中的顾客码。 在示例代码的最后,我们创建了一个Bank对象,并调用了几个方法来测试它们的功能。您可以根据自己的需要修改代码来满足您的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值