C++Primer Plus 第12章 类和动态内存分配::队列模拟----链表,堆栈,链表的方法的理解001

12.7 队列模拟

进一步了解类后,可将这方面的知识用于解决编程问题。Heather 银行打算在 Food Heap 超市开设一个自动柜员机(ATM)。FoodHeap超市的管理者担心排队等待使用ATM的人流会干扰超市的交通,希望限制排队等待的人数。Heather 银行希望对顾客排队等待的时间进行估测。要编写一个程序来模拟这种情况,让超市的管理者可以了解 ATM 可能造成的影响。
对于这种问题,最自然的方法是使用顾客队列。队列是一种抽象的数据类型(AbstractDataType,ADT)可以存储有序的项目序列。新项目被添加在队尾,并可以删除队首的项目。队列有点像栈,但栈在同一端进行添加和删除。这使得栈是一种后进先出(LIFO,last-in,first-out)的结构,而队列是先进先出(FIFO,first-in,frst-out)的。从概念上说,队列就好比是收款台或 ATM 前面排的队,所以对于上述问题,队列非常合适。因此,工程的任务之一是定义一个Queue类(第16章将介绍标准模板库类 queue,也将介绍如何开发自己的类)。
队列中的项目是顾客。Heather银行的代表介绍:通常,三分之一的顾客只需要一分钟便可获得服务。三分之一的顾客需要两分钟,另外三分之一的顾客需要三分钟。另外,顾客到达的时间是随机的,但每个小时使用自动柜员机的顾客数量相当稳定。工程的另外两项任务是:设计一个表示顾客的类;编写一个程序来模拟顾客和队列之间的交互(参见图12.7)。
在这里插入图片描述
12.7.1 队列类
首先需要设计一个Queue 类。这里先列出队列的特征:队列存储有序的项目序列:
1,队列所能容纳的项目数有一定的限制;
2,应当能够创建空队列;
3,应当能够检查队列是否为空;
4,应当能够检查队列是否是满的;
5,应当能够在队尾添加项目;
6,应当能够从队首删除项目;
7, 应当能够确定队列中项目数。
设计类时,需要开发公有接口和私有实现。

1.Queue 类的接口
从队列的特征可知,Queue 类的公有接口应该如下:

class Queue
{
   
	enum {
    Q_SIZE = 10 };

private:
	//privat representation to be developed later

public:
	Queue(int qs = Q_SIZE);
	~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值