该题目来自力扣,具体要求如下:
循环队列的实现:
1、构造一个循环队列。
构造循环的队列有两种方式,用顺寻表或者链表实现都可以,两者优势互补,这里重点讲解用顺序表实现。
按照题目要求,该循环队列的长度为K,还有头和尾。所以该队列的结构体中应该有这四种类型。
typedef struct {
int* a;
int front;
int tail;
int k;
} MyCircularQueue;
MyCircularQueue* myCircularQueueCreate(int k) {
MyCircularQueue* q=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));
q->a=(int*)malloc(sizeof(int)*(k+1));
q->front=q->tail=0;
q->k=k;
return q;
}
2、向循环队列插入一个元素。如果成功插入则返回真。
当队列容量满的时候,就不能插入,返回false,但是如何判断队列为满呢?假设按照要求开辟K个空间,那么当队列的头与尾重合时,队列的状态要么为空,要么为满,所以需要额外开辟出一个空间。
当开辟的空间为K个时:front等于ta