用C语言使用循环队列实现上述数据进队和出队的操作,每次进队和出队操作后需要遍历队列。
时间: 2024-03-14 11:43:16 浏览: 125
好的,我可以为您提供一些循环队列的代码示例,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5 // 队列最大容量
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队
int enqueue(Queue *queue, int element) {
if (isFull(queue)) {
printf("队列已满,无法入队!\n");
return 0;
}
queue->data[queue->rear] = element;
queue->rear = (queue->rear + 1) % MAX_SIZE;
return 1;
}
// 出队
int dequeue(Queue *queue, int *element) {
if (isEmpty(queue)) {
printf("队列为空,无法出队!\n");
return 0;
}
*element = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return 1;
}
// 遍历队列
void traverseQueue(Queue *queue) {
if (isEmpty(queue)) {
printf("队列为空,无法遍历!\n");
return;
}
int i;
for (i = queue->front; i != queue->rear; i = (i + 1) % MAX_SIZE) {
printf("%d ", queue->data[i]);
}
printf("\n");
}
int main() {
Queue queue;
initQueue(&queue);
int element;
// 入队
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
enqueue(&queue, 4);
enqueue(&queue, 5); // 队列已满
// 遍历队列
traverseQueue(&queue);
// 出队
dequeue(&queue, &element);
// 遍历队列
traverseQueue(&queue);
return 0;
}
```
以上代码实现了循环队列的初始化,入队,出队和遍历操作。您可以在此基础上进行更改和扩展,以满足您的实际需求。
阅读全文
相关推荐














