循环队列c语言代码实现
时间: 2024-04-14 20:24:55 浏览: 153
C语言循环队列的代码实现
循环队列是一种常见的数据结构,它可以在固定大小的数组上实现队列的功能。下面是一个简单的C语言代码实现循环队列的示例:
```c
#include <stdio.h>
#define MAX_SIZE 5
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} CircularQueue;
void initQueue(CircularQueue *queue) {
queue->front = -1;
queue->rear = -1;
}
int isFull(CircularQueue *queue) {
if ((queue->rear + 1) % MAX_SIZE == queue->front) {
return 1;
}
return 0;
}
int isEmpty(CircularQueue *queue) {
if (queue->front == -1 && queue->rear == -1) {
return 1;
}
return 0;
}
void enqueue(CircularQueue *queue, int item) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
if (isEmpty(queue)) {
queue->front = 0;
queue->rear = 0;
} else {
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
queue->data[queue->rear] = item;
}
int dequeue(CircularQueue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int item = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = -1;
queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_SIZE;
}
return item;
}
void displayQueue(CircularQueue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
int i = queue->front;
printf("Queue: ");
while (i != queue->rear) {
printf("%d ", queue->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("%d\n", queue->data[i]);
}
int main() {
CircularQueue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
enqueue(&queue, 4);
enqueue(&queue, 5);
displayQueue(&queue);
dequeue(&queue);
dequeue(&queue);
displayQueue(&queue);
enqueue(&queue, 6);
enqueue(&queue, 7);
displayQueue(&queue);
return 0;
}
```
这段代码实现了一个循环队列,使用了一个固定大小为5的数组来存储队列元素。其中,`initQueue`函数用于初始化队列,`isFull`函数用于判断队列是否已满,`isEmpty`函数用于判断队列是否为空,`enqueue`函数用于入队操作,`dequeue`函数用于出队操作,`displayQueue`函数用于打印队列中的元素。
阅读全文