上节已经提到有三种方法来实现循环顺序队列,其中第一种设立标识不常用,最常的就是后两种,上一节已经讨论了用计数器来实现循环顺序队列,这节就用第三种方法,也就是少用一个存储空间来实现循环顺序队列,其基本操作和用计数实现类同,下面是具体实现:
顺序队列(循环队列)类型描述:
//顺序队列的类型描述
#define MAXSIZE 5
typedef int ElemType;
typedef struct{
ElemType *data;
int front,rear;
}SqQueue;
基本操作:
1. 初始化顺序队列(循环队列) Init_SqQueue(SqQueue* Q)
void Init_SqQueue(SqQueue* Q){
Q->data = (SqQueue*)malloc(sizeof(SqQueue) * MAXSIZE);
Q->front = Q->rear = 0;
}
2. 销毁顺序队列(循环队列)Destroy_SqQueue(SqQueue* Q)
void Destroy_SqQueue(SqQueue* Q){
if(Q->data){
free(Q->data);
Q->front = Q->rear = 0;
}
}
3. 清空顺序队列(循环队列)Clear_SqQueue(SqQ