使用C语言实现一个队列
时间: 2024-05-03 10:18:23 浏览: 91
以下是使用C语言实现一个队列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100
typedef struct {
int front; // 队头下标
int rear; // 队尾下标
int data[MAX_QUEUE_SIZE]; // 存放队列元素的数组
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 判断队列是否已满
int isFull(Queue *q) {
return (q->rear == MAX_QUEUE_SIZE - 1);
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return (q->front == -1 || q->front > q->rear);
}
// 入队操作
void enqueue(Queue *q, int x) {
if (isFull(q)) {
printf("队列已满,无法入队!\n");
return;
}
q->data[++q->rear] = x;
if (q->front == -1) { // 如果队列为空,调整队头指针
q->front = 0;
}
}
// 出队操作
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("队列为空,无法出队!\n");
return -1;
}
int x = q->data[q->front++];
if (q->front > q->rear) { // 如果队列为空,重置队头和队尾指针
q->front = -1;
q->rear = -1;
}
return x;
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
return 0;
}
```
在上述示例中,我们使用了一个结构体 `Queue` 来表示队列,其中包括了队头下标、队尾下标以及存放队列元素的数组。`initQueue` 函数用于初始化队列,将队头和队尾下标都设置为 -1。`isFull` 函数和 `isEmpty` 函数分别用于判断队列是否已满和是否为空。`enqueue` 函数用于将元素入队,如果队列已满,则提示无法入队。`dequeue` 函数用于将元素出队,如果队列为空,则提示无法出队,并返回 -1。在 `enqueue` 函数和 `dequeue` 函数中,我们还需要根据队列的情况来调整队头和队尾指针的位置。
在 `main` 函数中,我们首先使用 `initQueue` 函数初始化队列,然后依次入队元素 1、2、3,并依次出队元素并输出。输出结果为:
```
1
2
3
队列为空,无法出队!
-1
```
阅读全文