void main() { int i; QElemType d; LinkQueue q; InitQueue(&q); printf("成功地构造了一个空队列!\n"); printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q)); printf("队列的长度为%d\n",QueueLength(q)); EnQueue(&q,-5); EnQueue(&q,5); EnQueue(&q,10); printf("插入3个元素(-5,5,10)后,队列的长度为%d\n",QueueLength(q)); printf("是否空队列?%d(1:空 0:否) ",QueueEmpty(q)); printf("队列的元素依次为:"); QueueTraverse(q,print); i=GetHead_Q(q,&d); if(i==OK) printf("队头元素是:%d\n",d); DeQueue(&q,&d); printf("删除了队头元素%d\n",d); i=GetHead_Q(q,&d); if(i==OK) printf("新的队头元素是:%d\n",d); ClearQueue(&q); printf("清空队列后,q.front=%u q.rear=%u q.front->next=%u\n",q.front,q.rear,q.front->next); DestroyQueue(&q); printf("销毁队列后,q.front=%u q.rear=%u\n",q.front, q.rear); }
void CustomerDeparture() { /* 处理客户离开事件,en.NTyPe<Qu */ int i; i = en.NType; DeQueue(&q[i], &customer); /* 删除第i队列的排头客户 */ TotalTime += en.OccurTime - customer.ArrivalTime; /* 累计客户逗留时间 */ if (!QueueEmpty(q[i])) { /* 设定第i队列的一个离开事件并插入事件表 */ GetHead_Q(q[i], &customer); et.OccurTime = en.OccurTime + customer.Duration; et.NType = i; OrderInsert(&ev, et, cmp); } }