如何使用C语言的基本数据结构实现队列(入队和出队操作)?
时间: 2024-10-21 13:02:51 浏览: 51
使用C语言实现的常见数据结构和算法.zip
在C语言中,队列是一种先进先出(First In First Out,FIFO)的数据结构,可以使用数组或者链表来实现。这里我们演示一下基于数组的简单队列实现:
首先,定义一个队列结构体,包含两个元素:存储队列元素的数组和当前的队首(front)和队尾(rear)指针。
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front, rear;
} Queue;
```
接下来,创建队列的相关函数:
1. 初始化队列(enqueue_init):
```c
void enqueue_init(Queue *q) {
q->front = q->rear = -1; // 初始为空
}
```
2. 入队操作(enqueue):
```c
void enqueue(Queue *q, int value) {
if (q->rear == MAX_SIZE - 1) { // 队满
printf("Queue is full.\n");
return;
}
q->data[++q->rear] = value; // 更新队尾指针并添加元素
}
```
3. 出队操作(dequeue):
```c
int dequeue(Queue *q) {
if (q->front == -1) { // 队空
printf("Queue is empty.\n");
return -1; // 返回错误代码
}
int removed = q->data[q->front]; // 保存并移除队首元素
q->front++; // 更新队首指针
return removed; // 返回出队的值
}
```
4. 查看队列是否为空或已满:
```c
int is_empty(Queue *q) {
return q->front == q- 1;
}
```
阅读全文