C语言 队列数组实现 例程
时间: 2025-04-07 21:11:47 浏览: 34
队列是一种典型的先进先出(FIFO,First In First Out)的数据结构,在C语言中可以利用数组轻松地实现一个简单的队列。下面是一个基于数组实现的简单队列示例:
### 示例代码
```c
#include <stdio.h>
#define MAX_SIZE 5 // 定义队列的最大容量
// 队列结构体定义
typedef struct {
int items[MAX_SIZE]; // 存储数据的数组
int front; // 指向队首元素的位置
int rear; // 指向队尾下一个插入位置
} Queue;
// 初始化队列函数
void initialize(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 判断队列是否为空
int is_empty(Queue *q) {
return (q->front == -1);
}
// 判断队列是否已满
int is_full(Queue *q) {
return ((q->rear + 1) % MAX_SIZE == q->front);
}
// 入队操作(添加元素)
void enqueue(Queue *q, int element) {
if (is_full(q)) {
printf("Error: 队列已满\n");
} else {
if (q->front == -1)
q->front = 0;
q->rear = (q->rear + 1) % MAX_SIZE;
q->items[q->rear] = element;
printf("%d 已加入队列。\n", element);
}
}
// 出队操作(移除并返回队首元素)
int dequeue(Queue *q) {
int item = -1;
if (is_empty(q))
printf("Error: 队列为空\n");
else {
item = q->items[q->front];
if (q->front == q->rear) { // 如果只有一个元素,则清空队列
q->front = -1;
q->rear = -1;
} else {
q->front = (q->front + 1) % MAX_SIZE;
}
printf("%d 已从队列删除。\n", item);
}
return item;
}
// 打印当前队列内容
void display(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
return;
}
int i = q->front;
while(1){
printf("%d ", q->items[i]);
if(i == q->rear) break;
i=(i+1)%MAX_SIZE;
}
printf("\n");
}
// 主程序演示队列功能
int main() {
Queue queue;
initialize(&queue);
enqueue(&queue, 10); // 插入元素到队列
enqueue(&queue, 20);
enqueue(&queue, 30);
enqueue(&queue, 40);
enqueue(&queue, 50);
enqueue(&queue, 60); // 尝试超过最大限制
display(&queue); // 显示队列状态
dequeue(&queue); // 删除队头元素
dequeue(&queue);
display(&queue);
enqueue(&queue, 70); // 再次尝试插入新元素
display(&queue);
return 0;
}
```
在这个例子中我们定义了一个名为`Queue`的结构体用于保存队列的基本信息,并实现了初始化、判空、判满、入队以及出队等基本的操作。
阅读全文
相关推荐


















