链队示意图: rear front al 2日 a3 (队首) (队尾) 讨论: front rear ①空链队的特征?front=rear ②链队会满吗?一般不会,因为删除时有free动作。除非内存不足! ③怎样实现链队的入队和出队操作? 完整操作函数 入队(尾部插入):rear->next-S;rear=S; 见教材P62下 出队(头部删除):front->next=p->next;
6 讨论: ① 空链队的特征? Q (队首) (队尾) front a1 a2 a3 ^ rear p front ^ rear ③ 怎样实现链队的入队和出队操作? ② 链队会满吗? front=rear 一般不会,因为删除时有free动作。除非内存不足! 入队(尾部插入):rear->next=S; rear=S; 出队(头部删除):front->next=p->next; S D ^ 链队示意图: 完整操作函数 见教材P62下
2.顺序队 关于整个顺序 顺序队类型定义: 队的总体描述 #define QUEUE-MAXSIZE100/最大队列长度 typedef struct QElemType *base; //队列的基址 int front; /队首指针 int rear; //队尾指针 SqQueue 顺序队中每个结点的结构描述在此省略,是QElemType类型。 建队核心语句: q.base=(QElemType *)malloc(sizeof (QElemType OUEUE MAXSIZE): /川分配空间 采用动态分配空 间的形式
7 采用动态分配空 间的形式 顺序队类型定义: 建队核心语句: q . base=(QElemType *)malloc(sizeof (QElemType ) * QUEUE_MAXSIZE); //分配空间 关于整个顺序 队的总体描述 #define QUEUE-MAXSIZE 100 //最大队列长度 typedef struct { QElemType *base; //队列的基址 int front; //队首指针 int rear; //队尾指针 }SqQueue 顺序队中每个结点的结构描述在此省略,是QElemType类型