循环队列的入队和出队算法C语言
时间: 2024-10-21 07:05:22 浏览: 108
循环队列是一种特殊的线性表数据结构,它在队列的一端进行入队操作,在另一端进行出队操作,当队列满了之后,新的元素会从队列头部开始插入,形成一个循环。以下是使用C语言实现循环队列的基本入队(Enqueue)和出队(Dequeue)操作:
**入队(Enqueue)算法:**
```c
void enqueue(circular_queue *cq, int data) {
if (cq->rear == cq->front + cq->size - 1) { // 队列已满
printf("Queue is full.\n");
return;
}
// 把新元素添加到队列尾部
cq->rear = (cq->rear + 1) % cq->size; // 使用取模运算防止溢出
cq->data[cq->rear] = data;
}
```
**出队(Dequeue)算法:**
```c
int dequeue(circular_queue *cq) {
if (cq->front == cq->rear) { // 队列为空
printf("Queue is empty.\n");
return -1; // 或者返回特殊值表示空队列
}
// 提取并移除队首元素
int removed_data = cq->data[cq->front];
cq->front = (cq->front + 1) % cq->size; // 更新头指针
return removed_data; // 返回删除的数据
}
```
在这里,`cq`是一个指向循环队列的结构体,包含头指针`front`、尾指针`rear`以及数组大小`size`。
阅读全文