c语言循环队列的实现
时间: 2023-09-03 10:01:42 浏览: 101
C语言循环队列是一种通过数组实现的队列结构,其特点是在添加和删除元素时不需要移动元素,而只需要移动队首和队尾的指针。
首先,需要定义循环队列的结构体,包含队列的容量、队首和队尾指针以及保存元素的数组。可以使用指针来动态分配数组的内存空间。
```c
typedef struct {
int capacity; // 队列容量
int* queue; // 队列数组
int front; // 队首指针
int rear; // 队尾指针
} CircularQueue;
```
接下来,可以定义一些基本操作函数来实现循环队列的功能。
1. 初始化队列
```c
CircularQueue* initQueue(int capacity) {
CircularQueue* queue = (CircularQueue*)malloc(sizeof(CircularQueue));
queue->capacity = capacity;
queue->queue = (int*)malloc(sizeof(int) * capacity);
queue->front = 0;
queue->rear = 0;
return queue;
}
```
2. 判断队列是否为空
```c
int isEmpty(CircularQueue* queue) {
return queue->front == queue->rear;
}
```
3. 判断队列是否已满
```c
int isFull(CircularQueue* queue) {
return (queue->rear + 1) % queue->capacity == queue->front;
}
```
4. 入队操作
```c
void enqueue(CircularQueue* queue, int value) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->queue[queue->rear] = value;
queue->rear = (queue->rear + 1) % queue->capacity;
}
```
5. 出队操作
```c
int dequeue(CircularQueue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->queue[queue->front];
queue->front = (queue->front + 1) % queue->capacity;
return value;
}
```
通过上述操作函数,可以实现循环队列的基本功能,包括初始化队列、判断队列是否为空或已满、入队和出队操作。在使用队列时,需要根据具体需求调用相应的操作函数即可。
阅读全文