队列是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数据来实现;链式队列是用链表来实现队列。
在对循环队列操作之前,先要建立队列结构元素:
#define BUF_SIZE 10 //循环队列的空间大小
typedef struct Queue
{
int *BUF;
int front;
int rear;
}QUEUE;
1.初始化是为新建的队列分配内存空间,然后在将头尾指针置零:
void initQueue(QUEUE *queue_q)
{
queue_q->BUF = (int *)malloc(sizeof(int)*BUF_SIZE);
if(queue_q->BUF != NULL) //队列内存分配成功
{
queue_q->front = 0;
queue_q->rear = 0;
}
}
2.判断循环队列是否为空的原理:头指针 = 尾指针
unsigned char isemptyQueue(QUEUE *queue_q)
{
if(queue_q->front == queue_q->rear)
{
return true;
}
else
{
return false;
}
}
3.判断队列是否为满:有两个办法一是增加一个参数,用来记录数组中当前元素的个数;第二个办法是,少用一个存储空间,也就是数组的最后一个存数空间不用,当