#define Qu 4 // 客户队列数
#define Khjg 5 // 两相邻到达的客户的时间间隔最大值
#define Blsj 30 // 每个客户办理业务的时间最大值
#include<string.h>
#include<ctype.h>
#include<malloc.h> // malloc()等
#include<limits.h> // INT_MAX 等
#include<stdio.h> // EOF(=^Z 或 F6),NULL
#include<stdlib.h> // atoi()
#include<io.h> // eof()
#include<math.h> // floor(),ceil(),abs()
#include<process.h> // exit()
#include<iostream.h> // cout,cin
// 函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
// #define OVERFLOW -2 因为在 math.h 中已定义 OVERFLOW 的值为 3,故去掉此行
typedef int Status; // Status 是函数的类型,其值是函数结果状态代码,如 OK 等
typedef int Boolean; // Boolean 是布尔类型,其值是 TRUE 或 FALSE
typedef struct // 定义 ElemType 为结构体类型
{int OccurTime; // 事件发生时刻
int NType; // 事件类型,Qu 表示到达事件,0 至 Qu-1 表示 Qu 个窗口的离开事件
}Event,ElemType; // 事件类型,有序链表 LinkList 的数据元素类型
typedef struct LNode // 结点类型
{ElemType data;
LNode *next;}*Link,*Position;
struct LinkList // 链表类型
{ Link head,tail; // 分别指向线性链表中的头结点和最后一个结点
int len; // 指示线性链表中数据元素的个数};
typedef LinkList EventList; // 事件链表类型,定义为有序链表
Status MakeNode(Link &p,ElemType e)
{ // 分配由 p 指向的值为 e 的结点,并返回 OK;若分配失败。则返回 ERROR
p=(Link)malloc(sizeof(LNode));
if(!p)
return ERROR;
p->data=e;
return OK;}
void FreeNode(Link &p)
{ // 释放 p 所指结点
free(p);
p=NULL;}