用c语言实现循环队列的插入与删除
时间: 2024-04-30 07:19:47 浏览: 124
循环队列是一种环形数据结构,可以用数组来实现。其插入和删除操作需要考虑队列为空和队列已满的情况。
下面是用C语言实现循环队列的插入和删除操作的代码:
```c
#define MAX_SIZE 100 // 队列的最大容量
typedef struct {
int data[MAX_SIZE];
int front; // 队头指针
int rear; // 队尾指针
} CircularQueue;
// 初始化循环队列
void init(CircularQueue* queue) {
queue->front = 0;
queue->rear = 0;
}
// 判断队列是否为空
int is_empty(CircularQueue* queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int is_full(CircularQueue* queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队操作
void enqueue(CircularQueue* queue, int x) {
if (is_full(queue)) {
printf("队列已满,无法插入元素\n");
return;
}
queue->data[queue->rear] = x;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
// 出队操作
int dequeue(CircularQueue* queue) {
if (is_empty(queue)) {
printf("队列为空,无法删除元素\n");
return -1;
}
int x = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return x;
}
```
在上面的代码中,我们使用`front`和`rear`两个指针来表示队列的头和尾。当队列为空时,它们指向同一个位置;当队列已满时,`rear`指向的位置不可用,因此需要使用取模运算来实现循环。`enqueue`函数将元素插入到队列的尾部,`dequeue`函数将队列头部的元素删除并返回。如果队列已满或为空,则需要输出相应的提示信息。
阅读全文