队列基本操作c语言实现
时间: 2024-10-12 08:03:50 浏览: 33
队列是一种先进先出(First In First Out, FIFO)的数据结构,在C语言中通常通过数组或链表来实现。这里简要介绍基于数组的队列操作:
1. **初始化**:
- 创建一个固定大小的数组作为队列,并设置两个指针,front表示队首元素的索引,rear表示队尾元素的下一个位置。
2. **入队** (enqueue):
- 当队列未满(rear < 数组长度)时,将新元素存放在 rear 索引处,然后 rear 自增。
3. **出队** (dequeue):
- 如果队列非空(front != rear),则返回 front 索引处的元素,然后 front 自增,表示移除该元素。
- 如果队列已满且需要出队,说明队列为空,此时通常返回一个特殊的标志值或者抛出异常。
4. **查看队列是否为空/满**:
- 队列为空:front == rear
- 队列已满:front + 1 == rear
5. **获取队列大小**:
- 如果队列中有元素:数组长度 - (front - rear)
- 否则:0
6. **遍历队列**:
使用循环从 front 到 rear 指针依次访问每个元素。
以下是基于数组的简单C语言队列结构体和部分函数的示例:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front; // 队首
int rear; // 队尾
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
// 入队
void enqueue(Queue *q, int value) {
if ((q->rear + 1) % MAX_SIZE == q->front) {
printf("Queue is full!\n");
} else {
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_SIZE;
}
}
// 出队
int dequeue(Queue *q) {
if (q->front == q->rear) {
return -1; // 或者其他特殊值表示队列为空
} else {
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return value;
}
}
// 主函数演示操作
int main() {
Queue queue;
initQueue(&queue);
// ... 进行入队、出队等操作
return 0;
}
```
阅读全文