数据结构与算法c语言循环队列
时间: 2023-10-23 08:15:23 浏览: 136
循环队列是一种基于数组实现的队列,它可以避免普通队列在出队操作后需要移动元素的问题。循环队列的实现需要两个指针:front 和 rear,分别指向队头和队尾元素。当队列为空时,front 和 rear 指向同一个位置;当队列满时,rear 指向的位置是队尾元素,而 front 指向的位置是队头元素的下一个位置。
循环队列的入队操作需要将元素插入到 rear 指向的位置,并将 rear 向后移动一位;出队操作需要将 front 向后移动一位,并返回 front 指向的元素。
以下是循环队列的 C 语言实现:
```c
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front, rear;
} CircularQueue;
void initQueue(CircularQueue *q) {
q->front = q->rear = 0;
}
int isEmpty(CircularQueue *q) {
return q->front == q->rear;
}
int isFull(CircularQueue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
void enqueue(CircularQueue *q, int x) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(CircularQueue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return x;
}
```
阅读全文