用C语言代码编写程序实现队列的基本运算(顺序列)
时间: 2024-10-19 11:15:39 浏览: 14
在C语言中,我们可以使用数组或动态内存来实现队列(先进先出,First In First Out,FIFO)。这里我们展示一个简单的顺序队列(数组实现)的例子,包括队列的初始化、入队、出队以及判断队列是否为空的操作:
```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 isQueueEmpty(Queue* queue) {
return queue->front == -1 && queue->rear == -1;
}
// 入队操作
void enqueue(Queue* queue, int value) {
if (isQueueFull(queue)) {
printf("Queue is full.\n");
return;
}
if (queue->rear == MAX_SIZE - 1) {
queue->rear = 0;
} else {
queue->rear++;
}
queue->data[queue->rear] = value;
}
// 出队操作
int dequeue(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = queue->rear = -1;
} else {
queue->front++;
}
return value;
}
// 检查队列是否已满
int isQueueFull(Queue* queue) {
return queue->rear + 1 == queue->front;
}
int main() {
Queue myQueue;
initQueue(&myQueue);
enqueue(&myQueue, 1);
enqueue(&myQueue, 2);
enqueue(&myQueue, 3);
printf("Dequeued element: %d\n", dequeue(&myQueue));
printf("Queue elements after dequeue: ");
while (!isQueueEmpty(&myQueue)) {
printf("%d ", dequeue(&myQueue));
}
return 0;
}
```
阅读全文