用C语言写一个队列,并对队列的信息挨个输出,详细标明代码注释
时间: 2024-02-27 08:56:04 浏览: 17
好的,以下是用C语言实现队列的代码,同时对每个队列元素进行输出的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10 // 队列的最大容量
// 定义队列结构体
typedef struct {
int data[MAX_SIZE]; // 数据存储数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = -1;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == -1 || queue->front > queue->rear;
}
// 判断队列是否已满
int isFull(Queue *queue) {
return queue->rear == MAX_SIZE - 1;
}
// 入队操作
void enqueue(Queue *queue, int data) {
if (isFull(queue)) {
printf("队列已满,无法入队\n");
return;
}
if (isEmpty(queue)) {
queue->front = 0;
}
queue->rear++;
queue->data[queue->rear] = data;
}
// 出队操作
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("队列为空,无法出队\n");
return -1;
}
int data = queue->data[queue->front];
queue->front++;
return data;
}
// 输出队列中的元素
void printQueue(Queue *queue) {
printf("队列中的元素为:");
for (int i = queue->front; i <= queue->rear; i++) {
printf("%d ", queue->data[i]);
}
printf("\n");
}
int main() {
Queue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
dequeue(&queue);
printQueue(&queue);
return 0;
}
```
代码注释如下:
- `MAX_SIZE`:队列的最大容量。
- `Queue`:队列结构体,包含一个数据存储数组和两个指针,分别指向队头和队尾。
- `initQueue`:初始化队列,将队头和队尾指针都置为-1。
- `isEmpty`:判断队列是否为空,如果队头指针为-1或队头指针大于队尾指针,则队列为空。
- `isFull`:判断队列是否已满,如果队尾指针等于`MAX_SIZE-1`,则队列已满。
- `enqueue`:入队操作,将数据插入队尾,并移动队尾指针。
- `dequeue`:出队操作,将队头元素取出,并移动队头指针。
- `printQueue`:输出队列中的元素,从队头指针到队尾指针遍历队列的数据存储数组,并逐个输出元素。
- `main`:主函数,创建一个队列,初始化,插入3个元素,取出一个元素,输出队列中剩余的元素。
希望这个代码能够帮到你,如果有任何问题,欢迎随时提出。