循环队列求队列长度代码
时间: 2023-09-15 10:14:56 浏览: 140
循环队列是一种使用固定大小的数组实现的队列,可以循环利用数组中的空间。求队列长度的代码如下:
```c
#define MAX_SIZE 100
typedef struct {
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列长度
int data[MAX_SIZE]; // 存放队列元素的数组
} CircularQueue;
// 初始化队列
void initQueue(CircularQueue *queue) {
queue->front = 0;
queue->rear = 0;
queue->size = 0;
}
// 判断队列是否为空
int isEmpty(CircularQueue *queue) {
return queue->size == 0;
}
// 判断队列是否已满
int isFull(CircularQueue *queue) {
return queue->size == MAX_SIZE;
}
// 入队
void enqueue(CircularQueue *queue, int element) {
if (isFull(queue)) {
printf("Queue is full. Cannot enqueue.\n");
return;
}
queue->data[queue->rear] = element;
queue->rear = (queue->rear + 1) % MAX_SIZE; // 循环更新队尾指针
queue->size++;
}
// 出队
int dequeue(CircularQueue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty. Cannot dequeue.\n");
return -1;
}
int element = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE; // 循环更新队头指针
queue->size--;
return element;
}
// 求队列长度
int getQueueLength(CircularQueue *queue) {
return queue->size;
}
```
上述代码中,使用`CircularQueue`结构体表示循环队列,其中`front`和`rear`分别指向队头和队尾元素,`size`表示队列的长度,`data`数组存放队列元素。`initQueue`用于初始化队列,`isEmpty`和`isFull`判断队列是否为空或已满,`enqueue`和`dequeue`分别进行入队和出队操作,`getQueueLength`用于求队列长度。
阅读全文