用C语言实现循环队列的入队、出队运算的源代码
时间: 2024-05-01 13:24:00 浏览: 109
以下是用C语言实现循环队列的入队、出队运算的源代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 5
typedef struct {
int front;
int rear;
int data[MAX_QUEUE_SIZE];
} CircularQueue;
void initQueue(CircularQueue* q) {
q->front = 0;
q->rear = 0;
}
int isQueueEmpty(CircularQueue* q) {
return q->front == q->rear;
}
int isQueueFull(CircularQueue* q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
void enQueue(CircularQueue* q, int item) {
if (isQueueFull(q)) {
printf("Queue is full. Cannot enqueue.\n");
return;
}
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
q->data[q->rear] = item;
}
int deQueue(CircularQueue* q) {
if (isQueueEmpty(q)) {
printf("Queue is empty. Cannot dequeue.\n");
return -1;
}
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return q->data[q->front];
}
void printQueue(CircularQueue* q) {
if (isQueueEmpty(q)) {
printf("Queue is empty.\n");
return;
}
int i = q->front;
while (i != q->rear) {
i = (i + 1) % MAX_QUEUE_SIZE;
printf("%d ", q->data[i]);
}
printf("\n");
}
int main() {
CircularQueue q;
initQueue(&q);
enQueue(&q, 1);
enQueue(&q, 2);
enQueue(&q, 3);
enQueue(&q, 4);
enQueue(&q, 5);
enQueue(&q, 6); // Queue is full. Cannot enqueue.
printQueue(&q); // 1 2 3 4 5
deQueue(&q);
deQueue(&q);
printQueue(&q); // 3 4 5
return 0;
}
```
在上面的代码中,我们定义了一个循环队列的结构体 `CircularQueue`,其中包含队头和队尾指针,以及一个固定大小的数组 `data` 用于存储队列元素。我们还定义了一些队列操作的函数,包括初始化队列、判断队列是否为空或已满、入队、出队、以及打印队列中的元素。在主函数中,我们演示了如何使用这些函数来操作循环队列。
阅读全文