标题:请大家帮忙看下这个程序怎么出错了?谢谢
只看楼主
xy_yx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-6-10
 问题点数:0 回复次数:1 
请大家帮忙看下这个程序怎么出错了?谢谢
#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);

}
搜索更多相关主题的帖子: int 链表 Event QElemType 
2008-06-10 14:22
腾讯
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-6-10
得分:0 
晕。。。LZ是哪个学校的??
还是某某人的mj??
怎么还是这个题目??偶见到不下n次

腾讯
2008-06-10 14:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-218438-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.672857 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved