实验四 队列的实现及应用
一、实验实习目的及要求
1.掌握队列的存储表示和实现。
2.掌握队列的基本操作实现。
3.掌握队列在解决实际问题中的应用。
二、实验实习设备(环境)及要求(软硬件条件)
实验室,使用VC上机调试出正确结果
三、实验实习项目、内容与步骤
利用队列模拟服务台前的排队现象问题。
问题描述:某银行有一个客户办理业务站,在单位时间内随机地有客户到达,设每位客户的业务办理时间是某个范围的随机值。设只有一个窗口,一位业务人员,要求程序模拟统计在设定时间内,业务人员的总空闲时间和客户的平均等待时间。假定模拟数据已按客户到达的先后顺序依次存于某个正文数据文件中,对应每位客户有两个数据:到达时间和需要办理业务的时间,文本文件内容如:10 20 23 10 45 5 55 10 58 15 65 10。
【数据描述】
typedef struct{
int arrive;
int treat;//客户的信息结构
}QNODE;
typedef struct node{
QNODE data;
Struct node *next;//队列中的元素信息
}LNODE
LNODE *front,*rear;// 队头指针和队尾指针
【算法描述】
{
设置统计初值:业务员等待时间,客户总的待时间,客户总人数等
设置当前时钟clock时间为0;//用变量clock来模拟当前时间.
打开数据文件,准备读;
读入第一位客户信息于暂存变量中;//文件读操作have= fscanf(fp,"%d %d",&temp.arrive,&temp.treat);
do{
//约定每轮循环,处理完一位客户
if(等待队列为空,并且还有客户)
{
//等待队列为空时
累计业务员总等待时间;
时钟推进到暂存变量中的客户的到达时间;
暂存变量中的客户信息进队;
读取下一位客户信息于暂存变量;
}
从等待队列出队一位客户;
累计客户人数;
将该客户的等待时间累计到客户的总等待时间;//=当前时间-客户到达时间
设定当前客户的业务办理结束时间;//=当前时间+客户办理业务所需时间
while(下一位客户的到达时间在当前客户处理结束之前)
{
暂存变量中的客户信息进队;
读取下一位客户信息于暂存变量;
}
时钟推进到当前客户办理结束时间;
}while(还有未处理的客户);
计算统计结果,并输出;
四、实验实习所得结果及分析
五、实验实习结果分析和(或)源程序调试过程
#