用C语言而不是C++实现链队列的初始化、入队、出队等操作。
时间: 2024-06-17 15:03:47 浏览: 125
链队列是一种基于链表实现的队列数据结构,使用C语言实现时,需要定义一个结构体来表示队列中的每个元素,如下所示:
```
typedef struct node {
int data; // 数据域
struct node* next; // 指向下一个节点的指针
} Node;
typedef struct queue {
Node* front; // 队头指针
Node* rear; // 队尾指针
} Queue;
```
通过这个结构体,我们可以定义一些基本的操作函数,包括初始化、入队、出队等操作。
1. 初始化操作
初始化操作可以创建一个空的队列,即队头和队尾指针都指向NULL。具体实现如下:
```
void initQueue(Queue* q) {
q->front = q->rear = NULL;
}
```
2. 入队操作
入队操作可以在队列尾部添加一个新元素,具体实现如下:
```
void enQueue(Queue* q, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
```
3. 出队操作
出队操作可以删除队头元素,并返回它的值,具体实现如下:
```
int deQueue(Queue* q) {
if (q->front == NULL) {
printf("Error: the queue is empty.\n");
return -1;
}
int value = q->front->data;
Node* temp = q->front;
if (q->front == q->rear) {
q->front = q->rear = NULL;
} else {
q->front = q->front->next;
}
free(temp);
return value;
}
```
阅读全文