数据结构课程设计
海纳百川,大道致远
时光荏苒,青春在这里生长,为了理想我们在这里摩拳擦掌,
岁月不居,梦想依旧灿烂,纯真的理想在这里放飞
这个设计是为了让我们在队列的理解上更加的明白,然后自己做了一个课设。
因为百度了别人的思路也会被判为抄袭,所以这次这是自己在想。然后想的是按照时间的先后,用一个循环一直进行模拟,然后同时在模拟过程中,随机出现客户,随机有客户离开,并且将时间进行记录。
题目及要求
营业窗口队列模拟(***)
要求:实现具有n个窗口的现实队列模拟,统计每人的等待时间。
1). 随机产生顾客的到达时间和服务时间存盘。
2). 实现队列的插入和删除。
3). 当有顾客离开时,根据队列长度调整队尾。
4). 考虑顾客中途离队的情况。
5). 考虑顾客具有优先级的情况。
题目理解的思路与另一篇一样,只是设计的思路有一点点不一样。
设计的流程
(一)主干部分
1.首先将整个队列和客户进行随机生成,然后将他们的数据进行存储
2. 然后进行循环,并随机将客户放入队列,离开队列,
3. 将出队后的客户时间进行统计
4. 将数据打印输出到控制台
(二)将要求一步步加入
1.将窗口和队列用数组来标记,因为有多个队列和客户;
2.先将客户是否是VIP来进行标记,并且将原来的通道改变,并用queue【0】作为VIP通道,所以加上VIP属性,并在初始化函数进行随机生成
3。中途离队
(三)中途离队的细节
1.使用的是将一个新的队列给重新给原来的队列;
2.离队的时间会发生变化,而在现实生活中队头的离队概率小,所以将是从非队头进行离队;
3.离地的时间会重新改变,后面的时间需要重置,及离队客户后面的客户的开始时间变成了离队客户的开始时间,后面的客户的时间也一个个的改变;
4.所以时间问题需要将后面的也发生变化。
(四)用了一个菜单
这个只是看起来好看点。可是打印输出好像有问题,所以可以修改一下。
下面是定义及各个函数
#define N 500 //来了多少的客户
int MidOut = 0; //中途离开的客户统计
#define MaxSize N //将队列的长度用来了多少人来定义(包括最后等到下班的客户)
int window = 4; //窗口数
//定义时间
typedef struct Time
{
int h;
int m;
}T;
//定义每个客户的到达窗口时间,等待时间,开始办理时间,
//业务处理时间,结束业务时间(离开时间),身份
struct customer
{
T ArriveTime;