循环队列
- 首先存储队列元素的结构体是数组
- 循环的含义为front以及rear可以循环的代表任意一个数组元素的下表
通过(front+1)%len或者(rear+1)%len来实现
front为队列中第一个元素的下标
rear为队列最后元素的下一个存储空间的下标 - 判断队列是否为空,用(front=?rear)规定相等就是队列为空不相等就是队列中存在元素
- 判断队列是否已满(不是指数组满而是指队列满,数组中要留一个元素空间来判断是否已满),(rear+1)%len=?front,如果想等意味着rear的下一个指向的位置为队列的起始位置。
代码实现
构造队列的结构体
typedef struct QUEUE{
int front;
int rear;
int *ARRAY;
}QUEUE,*pQUEUE;
注意front以及rear是用来表示下标,并不是指针。
队列的初始化
void init_queue(pQUEUE pQ,int len){
pQ->ARRAY=(int*)malloc(sizeof(int)*len);
pQ->front=0;
pQ->rear=0;
}
此处申请的空间为int型的数组;可根据存储数据的需要来进行调节。
完整的代码展示包含功能为入队,出队
#include <stdio.h>
#inclu