如何对循环队列插入和删除 完整代码c语言
时间: 2024-04-30 08:19:39 浏览: 10
循环队列的插入和删除操作是很常见的操作,下面是一个完整的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 6 // 循环队列的最大长度
typedef struct {
int data[MAXSIZE];
int front; // 队头指针
int rear; // 队尾指针
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
void enQueue(Queue *q, int x) {
if (isFull(q)) {
printf("Queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
void deQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
printf("%d is dequeued.\n", x);
}
int main() {
Queue q;
initQueue(&q);
enQueue(&q, 10);
enQueue(&q, 20);
enQueue(&q, 30);
enQueue(&q, 40);
enQueue(&q, 50);
enQueue(&q, 60); // 队列已满,无法插入
deQueue(&q);
deQueue(&q);
deQueue(&q);
deQueue(&q);
deQueue(&q);
deQueue(&q); // 队列已空,无法删除
return 0;
}
```
上面代码中,我们定义了一个结构体`Queue`表示循环队列,其中`data`数组存储队列元素,`front`表示队头指针,`rear`表示队尾指针。`initQueue`函数用于初始化队列,`isFull`和`isEmpty`函数分别判断队列是否已满和是否为空。`enQueue`函数用于插入元素,`deQueue`函数用于删除元素。在主函数中,我们进行了插入和删除操作,并测试了队列已满和队列已空的情况。