c数据结构中程序实现循环队列的基本操作 进队和出队
时间: 2024-11-15 11:29:38 浏览: 5
在C语言中,循环队列是一种特殊的线性表,它通过将队尾链接到队首来实现“队满”和“队空”的边界处理。基本的循环队列操作包括入队(Enqueue)和出队(Dequeue)。以下是这些操作的简单实现:
1. **入队(Enqueue)**:
- 首先检查队列是否已满。如果队列长度达到最大容量(一般由数组大小决定),则需要进行“循环”,即将新的元素插入到队首位置,然后更新头指针。
- 如果队列未满,则将新元素添加到当前队尾位置,并更新尾指针。
```c
void enqueue(CircularQueue *cq, int item) {
if (cq->rear == cq->front + cq->size - 1) { // 队满
printf("Queue is full\n");
} else {
cq->data[cq->rear] = item; // 插入元素
cq->rear = (cq->rear + 1) % cq->size; // 循环更新尾部指针
printf("Item added to queue\n");
}
}
```
2. **出队(Dequeue)**:
- 检查队列是否为空。如果队列头部和尾部相等,表示队列为空,无法出队。
- 否则,将队头元素移除,并更新头指针,若头指针指向的是队尾位置,则再次将其置为队首。
```c
int dequeue(CircularQueue *cq) {
if (cq->front == cq->rear) { // 队空
printf("Queue is empty\n");
return -1; // 或者返回特殊值,如0,NULL等
} else {
int removedItem = cq->data[cq->front]; // 移除元素
cq->front = (cq->front + 1) % cq->size; // 更新头部指针
printf("Item dequeued from queue: %d\n", removedItem);
return removedItem;
}
}
```
阅读全文