头文件
#ifndef BANK_SIM_H
#define BANK_SIM_H
#include <stddef.h>
#define COUNTER 8 /* 银行共有 8 个营业窗口 */
#define ARRIVAL COUNTER /* 客户到达事件 */
typedef struct {
size_t OccurTime, NType; /* 事件发生时刻;事件类型 */
} Event;
typedef struct Enode {
Event event;
struct Enode *next;
} Enode, *EventList;
typedef struct {
size_t ArrTime, Duration; /* 到达时刻;办理时间 */
} QElem; /* 队列数据元素类型 */
typedef struct Qnode {
QElem Cust; /* 客户记录 */
struct Qnode *next;
} Qnode, *Qptr;
typedef struct {
Qptr front, rear; /* 队头指针,队尾指针 */
} LinkQueue;
int bank_open( void ); /* 初始化操作 */
int CustArr( void ); /* 处理客户到达事件 */
int CustDepart( void ); /* 处理客户离开事件 */
void DelFirst( void ); /* 删除事件表第一个节点,并把值赋给 en */
int DeQueue( LinkQueue * ); /* 出队 */
void DestroyAll( void ); /* 销毁链表和队列 */
void DestroyList( EventList ); /* 销毁链表 */
void DestroyQueue( LinkQueue * ); /* 销毁队列 */
int EnQueue( LinkQueue *, QElem ); /* 进队 */
EventList InitList( void ); /* 创建链表 */
int InitQueue( LinkQueue * ); /* 建立空队列 */
size_t Minimun( void ); /* 求长度最短队列 */