利用c语言实现一个队列
时间: 2024-10-07 18:04:55 浏览: 32
详解数据结构C语言实现之循环队列
在C语言中,我们可以使用数组或链表来实现一个队列数据结构。这里我会提供一种基于数组的简单队列实现:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 队列的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
// 检查队列是否为空
int isEmpty(Queue* queue) {
return (queue->front == -1);
}
// 检查队列是否已满
int isFull(Queue* queue) {
return ((queue->rear + 1) % MAX_SIZE == queue->front);
}
// 入队操作
void enqueue(Queue* queue, int value) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->data[++queue->rear] = value;
if (queue->front == -1) queue->front = 0;
}
// 出队操作
int dequeue(Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
queue->data[queue->front++] = -1; // 将队头移动到下一个位置
if (queue->front > MAX_SIZE - 1) queue->front = 0;
return value;
}
// 打印队列内容
void display(Queue* queue) {
for (int i = queue->front; i <= queue->rear; ++i) {
printf("%d ", queue->data[i]);
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
display(&q); // 输出 [1, 2, 3]
printf("Dequeued element: %d\n", dequeue(&q)); // 输出 1
display(&q); // 输出 [2, 3]
return 0;
}
```
这个例子展示了如何使用数组实现一个基础的FIFO(先进先出)队列。
阅读全文