银行等待时间问题队列部分:(1)
程序已经改好,修改说明都在圆括号里面。
#include
#include
#define OK 1
#define ERROR 0
#define MAXQSIZE 100 // 最大队列长度(对于循环队列,最大队列长度要减1)
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int QElemType;
typedef struct
{
QElemType *base; // 初始化的动态分配存储空间
int front; // 头指针,若队列不空,指向队列头元素
int rear; // 尾指针,若队列不空,指...全部
程序已经改好,修改说明都在圆括号里面。
#include
#include
#define OK 1
#define ERROR 0
#define MAXQSIZE 100 // 最大队列长度(对于循环队列,最大队列长度要减1)
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int QElemType;
typedef struct
{
QElemType *base; // 初始化的动态分配存储空间
int front; // 头指针,若队列不空,指向队列头元素
int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
typedef struct
{
int arrive;
int deal;
}qelem;
Status InitQueue(SqQueue &Q)
{
// 构造一个空队列Q,该队列预定义大小为MAXQSIZE
// QElemType *base,front,rear;(删除)
se=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(! se)
return ERROR;
ont= ar=0;
return OK;
}
// Status InitQueue(SqQueue *Q) 这两个Q一样吗(这里的Q与上面的Q不一样,这里是C表达,上面是C++表达)
// { /* 构造一个空队列Q */
// (*Q)。
base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)); 为什么不写100(为了更加通用)
// if(!(*Q)。base) /* 存储分配失败 */
// exit(OVERFLOW);
// (*Q)。
front=(*Q)。rear=0;
// return OK;
// }
Status EnQueue(SqQueue &Q,QElemType e)
{
// 插入元素e为Q的新的队尾元素
//QElemType *base,front,rear;(删除)
if(( ar+1)%MAXQSIZE== ont)
return ERROR;
se[ ar]=e;
ar=( ar+1)%MAXQSIZE;
return OK;
}
//Status EnQueue(SqQueue *Q,QElemType e)
// { /* 插入元素e为Q的新的队尾元素 */
// if((*Q)。
rear>=MAXQSIZE)
// { /* 队列满,增加1个存储单元 */(建议一次多增加几个数组元素)
// (*Q)。base=(QElemType *)realloc((*Q)。base,((*Q)。
rear+1)*sizeof(QElemType));
// if(!(*Q)。base) /* 增加单元失败 */
// return ERROR;
// }
// *((*Q)。base+(*Q)。
rear)=e;
// (*Q)。rear++;为什么自加(队尾位置变化了)
// return OK;
// }
Status DeQueue(SqQueue &Q, QElemType &e)
{
// 若队列不空, 则删除Q的队头元素, 用e返回其值, 并返回OK; 否则返回ERROR
//请补全代码//
//QElemType *base,front,rear;(删除)
if( ar== ont)
return ERROR;
e= se[ ont];
ont=( ont+1)%MAXQSIZE;
return OK;
}
// Status DeQueue(SqQueue *Q,QElemType *e)
// { /* 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR */
// if((*Q)。
front==(*Q)。rear) /* 队列空 */
// return ERROR;
// *e=(*Q)。base[(*Q)。front];
// (*Q)。front=(*Q)。front+1;
// return OK;
// }
void main()
{
int n,i,e1,e2,nowtime=0,totaltime=0;
float s;
SqQueue S;//(建议一个程序中不要同时用大S和小s作变量名,看上去容易混淆)
qelem x;
InitQueue(S);//(漏了队列初始化调用)
scanf("%d",&n);
for(i=0;ie1)
{
totaltime=totaltime+nowtime-e1;//(去掉+e2,某人的等待时间不包括自己的办理时间);
nowtime=nowtime+e2;
}
else
nowtime=e1+e2;
}
s=(float)totaltime/(float)n;
printf("%。
2f",s);
//system("PAUSE");
}。收起