📅  最后修改于: 2023-12-03 14:52:14.387000             🧑  作者: Mango
在 C 语言中,队列是一种常见的数据结构,可以用于存储和管理一组元素。队列通常遵循先进先出(FIFO)的原则:先插入的元素最先被删除。在本文中,我们将介绍如何在 C 中初始化队列。
在 C 中,我们可以使用结构体来定义队列。以下是一个简单的队列结构的定义:
#define MAXSIZE 10
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} Queue;
这个队列结构包括一个整型数组 data
(用于存储队列的元素)、一个整型变量 front
(表示队列头的位置)、一个整型变量 rear
(表示队列尾的位置)。
要初始化队列,我们需要设置队列的 front
和 rear
变量的初始值。通常,我们将它们都设置为 -1,以表示队列为空。
以下是一个初始化队列的函数的示例:
#include <stdio.h>
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
在这个函数中,我们让 q->front
和 q->rear
都等于 -1。
以下是一个使用初始化函数初始化队列并添加元素的示例代码:
#include <stdio.h>
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
void enqueue(Queue *q, int data) {
if (q->rear == MAXSIZE - 1) {
printf("Queue is full.");
return;
}
else {
q->rear++;
q->data[q->rear] = data;
}
}
void printQueue(Queue *q) {
int i;
printf("[");
for (i = q->front + 1; i <= q->rear; i++) {
printf("%d ", q->data[i]);
}
printf("]\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("Queue: ");
printQueue(&q);
return 0;
}
在这个程序中,我们定义了一个 enqueue
函数来往队列中添加元素。如果队列已满,该函数将打印一条错误消息并返回。否则,它将增加 q->rear
的值,并将 data
添加到 q->data[q->rear]
中。
我们还定义了一个 printQueue
函数,它会打印队列的元素。
在 main
函数中,我们先初始化队列,然后添加 3 个元素并打印队列。
运行程序后,输出如下:
Queue: [1 2 3 ]
初始化队列很简单,只需要将队列的 front
和 rear
变量都设置为 -1 即可。在添加元素之前,我们需要确保队列未满。