请大家帮忙看下这个程序怎么出错了?谢谢
#include<stdio.h>#include<stdlib.h>
#include<string.h>
typedef struct
{
int OccurTime; //事件发生时刻
int NType; //事件类型,0表示到达事件,1至20表示二十个坐位的离开事件
}Event,ElemType;
typedef LinkList EventList //事件链表类型,定义为有序链表
typedef struct
{
int ArrivalTime; //到达时刻
int Duration; //所需时间
}QElemType; //队列的数据元素类型
EventList ev; //事件表
Event en; //事件客记录
LinkQueue q[10]; //十个顾
QElemType customer; //累积顾客逗留时间,顾客数
int TotalTime,CustomerNum;
int cmp(Event a,Event b); //事件a的发生时刻<或=或>事件了的发生时刻分别返回-1或0或1
void OpenForDay();
{
TotalTime=0; //初始化累积的时间为0
CustomerNum=0; //初始化顾客数为0
InitList(ev); //初始化事件链表为空表
en.OccurTime=0 //设定第一个顾客到达事件
en.NType=0;
OrderInsert(ev,en,cmp); //插入事件表
for(int i=1;i<=10;i++) //置空队列
{
InitQueue(q[i]);
}
}
void CustomerArrived()
{
++CutomerNum;
Random(durtime,intertime); //生成随机数
t=en.OccurTime+intertime; //下一顾客到达时刻
if(t<CloseTime) //理发店还未关门,插入事件表
orderInsert(ev,(t,0),cmp);
i=Minimum(q); //求长度最短队列
EnQueue(q[i],(en.OccurTime,durtime));
if(QueueLength(q[i])==1)
OrderInsert(ev,(en.OccurTime+durtime,i),cmp); //设定第i队列的一个离开事件并插入事件表
}
void CustomerDeparture() //处理顾客离开事件
{
i=en.NType;
DelQueue(q[i],customer); //删除第i队列的排头顾客
TotalTime+=en.OccurTime-customer.ArrivalTime; //累积顾客逗留时间
if(!QueueEmpty(q[i]))
{
GetHead(q[i],customer);
OrderInsert(ev,(en.OccurTime+customer.Duration,i),(*cmp)());
//设定第i 队的一个离开事件并插入事件表
}
}
void Barber_Simulation(int CloseTime)
{
OpenForDay(); //初始化
while(!ListEmpty(ev))
{
DelFirst (GetHead(ev),p);
en=GetCurElem(p);
if(en.NType==0)
CustomerArrived(); //处理顾客到达事件
else
CustomerDeparture(); //处理顾客离开时间
} //计算并输出平均逗留时间
printf("平均逗留时间为:%f\n",(float)TotalTime/CustomerNum);
}
void main()
{
void Barber_Simulation(int CloseTime);
printf("到达的顾客人数为:",CustomerNum);
}