队列的顺序存储结构:要预先分配内存,知道队列的最大长度。
初始化队列时Q.rear=Q.front=0;
对尾插入队列元素rear+1,对头删除队列元素front+1,假设当前为队列分配的最大空间为6,则当队列处于图(d)时,再插入元素会溢出队列,然而此时又不宜像顺序栈那样,进行存储再分配扩大数组空间,但是实则队列的实际可用空间并未占满。于是可以假象构造成环状的空间。
但此时Q.rear=Q,front并不能确定是空队列还是满队列,可用两种方法处理: 第一种是设置一个标志位以区分队列是空还是满 ;第二种是少用一个元素空间,约定以 对头指针在队尾指针的下一个位置上时队列为满队列。
C实现循环队列如下:
#include <stdio.h>
#ifndef STATUS_H
#define STATUS_H
/* 状态码 */
#define TRUE 1 //真
#define FALSE 0 //假
#define YES 1 //是
#define NO 0 //否
#define OK 1 //通过
#define ERROR 0 //错误
#define SUCCESS 1 //成功
#define UNSUCCESS 0 //失败
#define INFEASIBLE -1