银行客户平均等待时间
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//Q.front->next=p->next;
//if(Q.rear==p)
//Q.rear=Q.front;
//free(p);
return OK;
}
Status DeQueue(LinkQueue &Q,QElemType &arrive,QElemType &treat)
{
QueuePtr p;
if(arrive>=finish)/*下一位客户的到达时间在当前客户处理结束之后*/
clock=arrive;/*时钟推进到下一位客户的到达时间*/
else
clock=finish; /*时钟推进到当前客户办理结束时间*/
}
printf("%.2f\n",wait/m);
}/*main_end*/
}LinkQueue;
Status InitQueue (LinkQueue &Q)
{
Q.front=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
return ERROR;
Q.front->next=NULL;
Q.rear=Q.front;
return OK;
//判断队列是否为空
if(Q.front==NULL)
return OK;
else
return OKK;
}
void main()
{
float clock=0,wait=0,count=0,finish;;int n,m,i;float arrive,treat;
LinkQueue Q1;
InitQueue (Q1);
if(Q.front==Q.rear)
return ERROR;
p=Q.front-Hale Waihona Puke Baidunext;
arrive=p->arrive;
treat=p->treat;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType arrive,QElemType treat)
for(;n>0;n--)
{
wait+=clock-arrive;/*累计到客户的总等待时间*/
finish=clock+treat;/*设定当前客户业务办理结束时间;*/
DeQueue(Q1,arrive,treat);/*删除当前客户信息*/
ReQueue(Q1,arrive,treat);/*读入下一位客户信息*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OKK 2
#define OK 1
#define ERROR 0
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
Input
第一行:一天内的客户总人数n
第二行:第一个客户的到达时刻和需要办理业务的时间
第三行:第二个客户的到达时刻和需要办理业务的时间
……
第n行:第n - 1个客户的到达时刻和需要办理业务的时间
第n + 1行:第n个客户的到达时刻和需要办理业务的时间
Output
第一行:所有客户的平均等待时间(精确到小数点后2位)
scanf("%d",&n);
m=n;
for(i=1;i<=n;i++)
{
scanf("%f%f",&arrive,&treat);
EnQueue(Q1,arrive,treat);
}
ReQueue(Q1,arrive,treat);/*读入第一位客户信息*/
clock=arrive;/*时钟推进到当前客户的到达时间*/
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
return ERROR;
p->arrive=arrive;
p->treat=treat;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
Status EmptyQueue(LinkQueue &Q){
}
Status ReQueue(LinkQueue &Q,QElemType &arrive,QElemType &treat)
{
QueuePtr p;
if(Q.front==Q.rear)
return ERROR;
p=Q.front->next;
arrive=p->arrive;
treat=p->treat;
typedef float QElemType;
typedef struct QNode{
QElemType arrive;
QElemType treat;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
队列的应用——银行客户平均等待时间
描述
某银行有一个客户办理业务站,在一天内随机地有客户到达,设每位客户的业务办理时间是某个范围内的值。设只有一个窗口,一位业务人员,要求程序模拟统计在一天时间内,所有客户的平均等待时间。模拟数据按客户到达的先后顺序依次由键盘输入,对应每位客户有两个数据,到达时刻和需要办理业务的时间。
//if(Q.rear==p)
//Q.rear=Q.front;
//free(p);
return OK;
}
Status DeQueue(LinkQueue &Q,QElemType &arrive,QElemType &treat)
{
QueuePtr p;
if(arrive>=finish)/*下一位客户的到达时间在当前客户处理结束之后*/
clock=arrive;/*时钟推进到下一位客户的到达时间*/
else
clock=finish; /*时钟推进到当前客户办理结束时间*/
}
printf("%.2f\n",wait/m);
}/*main_end*/
}LinkQueue;
Status InitQueue (LinkQueue &Q)
{
Q.front=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
return ERROR;
Q.front->next=NULL;
Q.rear=Q.front;
return OK;
//判断队列是否为空
if(Q.front==NULL)
return OK;
else
return OKK;
}
void main()
{
float clock=0,wait=0,count=0,finish;;int n,m,i;float arrive,treat;
LinkQueue Q1;
InitQueue (Q1);
if(Q.front==Q.rear)
return ERROR;
p=Q.front-Hale Waihona Puke Baidunext;
arrive=p->arrive;
treat=p->treat;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType arrive,QElemType treat)
for(;n>0;n--)
{
wait+=clock-arrive;/*累计到客户的总等待时间*/
finish=clock+treat;/*设定当前客户业务办理结束时间;*/
DeQueue(Q1,arrive,treat);/*删除当前客户信息*/
ReQueue(Q1,arrive,treat);/*读入下一位客户信息*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OKK 2
#define OK 1
#define ERROR 0
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
Input
第一行:一天内的客户总人数n
第二行:第一个客户的到达时刻和需要办理业务的时间
第三行:第二个客户的到达时刻和需要办理业务的时间
……
第n行:第n - 1个客户的到达时刻和需要办理业务的时间
第n + 1行:第n个客户的到达时刻和需要办理业务的时间
Output
第一行:所有客户的平均等待时间(精确到小数点后2位)
scanf("%d",&n);
m=n;
for(i=1;i<=n;i++)
{
scanf("%f%f",&arrive,&treat);
EnQueue(Q1,arrive,treat);
}
ReQueue(Q1,arrive,treat);/*读入第一位客户信息*/
clock=arrive;/*时钟推进到当前客户的到达时间*/
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
return ERROR;
p->arrive=arrive;
p->treat=treat;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
Status EmptyQueue(LinkQueue &Q){
}
Status ReQueue(LinkQueue &Q,QElemType &arrive,QElemType &treat)
{
QueuePtr p;
if(Q.front==Q.rear)
return ERROR;
p=Q.front->next;
arrive=p->arrive;
treat=p->treat;
typedef float QElemType;
typedef struct QNode{
QElemType arrive;
QElemType treat;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
队列的应用——银行客户平均等待时间
描述
某银行有一个客户办理业务站,在一天内随机地有客户到达,设每位客户的业务办理时间是某个范围内的值。设只有一个窗口,一位业务人员,要求程序模拟统计在一天时间内,所有客户的平均等待时间。模拟数据按客户到达的先后顺序依次由键盘输入,对应每位客户有两个数据,到达时刻和需要办理业务的时间。