以后有空就写个博客,算是技术笔记。
队列的特征是先进先出,可以满足许多应用场景需求,下面是自己用C实现的定长循环队列(代码有问题的话欢迎大家指正)。
//这个队列实现暂且定位为“单生产者单消费者模型”。
//在这个循环队列里,"队空"的条件是:队头索引 = 队尾索引, “队满”的条件是:队尾索引加1等于队头索引
//按照惯性思维,队头在左边,队尾在右边,入队是尾右移,索引值增加,出队是队头右移,索引增加。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 16 //队列长度实际为(MAXSIZE - 1),另一个用来区分队空和队满
typedef int QElemType;
typedef struct {
QElemType data[MAXSIZE];
int front; //队列头索引
int rear; //队列尾索引
}CircueQueue;
//创建一个循环队列并初始化为空。
CircueQueue * CreateCircueQueue(void)
{
CircueQueue *q = NULL;
q = (CircueQueue *)malloc(sizeof(CircueQueue));
q -> front = 0;
q -> rear = 0;
return (p);
}
// 求循环队列中元素个数
int CircueQueueLength(CircueQueue *q)
{
return ((q->rear - q->front + MAXSIZE) % MAXSIZE);
}
//循环队列的“入队”操作