|
|
|
@ -137,6 +137,8 @@ ADT Queue{
|
|
|
|
|
采用模块化设计,通过大量的函数实现,银行开门、客户进门、客户离开等功能进而统计一天内客户在银行逗留的平均时间
|
|
|
|
|
## 3.1 核心数据结构的实现
|
|
|
|
|
首先通过有序链表,实现一部分功能如:先初始化有序表,在第i个位置之前插入元素e,删除链表中第一个结点并以q返回,已知p指向线性链表中的一个结点,返回p所指结点中元素的值等等。其次通过队列实现入队和出队。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
int OccurTime;//事件发生时刻
|
|
|
|
@ -168,6 +170,8 @@ Event en;//事件
|
|
|
|
|
LinkQueue q[5];//四个客户队列
|
|
|
|
|
QElemType customer;//客户记录
|
|
|
|
|
int TotalTime, CustomerNum, CloseTime;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
链表
|
|
|
|
|
【1】通过一个个指针将节点串起来
|
|
|
|
|
【2】对于元素的随机访问,需要使用计数器来访问指定的元素,并且只能从头节点开始访问,每访问一个节点,计数器加1,直到给定的“下标”
|
|
|
|
@ -176,6 +180,7 @@ int TotalTime, CustomerNum, CloseTime;
|
|
|
|
|
【1】先进先出
|
|
|
|
|
【2】线程池中的线程就是从任务队列中取出任务
|
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
|
```
|
|
|
|
|
Status InitList(LinkList& L)//链表初始化
|
|
|
|
|
{
|
|
|
|
|
L = (LinkList)malloc(sizeof(LNode));
|
|
|
|
@ -354,6 +359,7 @@ p = p->next;
|
|
|
|
|
printf("\n");
|
|
|
|
|
return OK;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|