用C语言实现链队列的初始化、入队、出队完整代码
时间: 2024-06-17 19:03:46 浏览: 26
链队列是一种使用链表实现的队列,它具有队列的所有特点,如先进先出。下面是用C语言实现链队列的初始化、入队、出队完整代码:
```
#include <stdio.h>
#include <stdlib.h>
// 链队列的结点结构体
typedef struct QNode {
int data;
struct QNode *next;
} QNode;
// 链队列的结构体
typedef struct {
QNode *front; // 队头指针
QNode *rear; // 队尾指针
} LinkQueue;
// 初始化链队列
void InitQueue(LinkQueue *q) {
q->front = q->rear = (QNode*)malloc(sizeof(QNode)); // 创建头结点
q->front->next = NULL;
}
// 入队操作
void EnQueue(LinkQueue *q, int x) {
QNode *s = (QNode*)malloc(sizeof(QNode)); // 创建新结点
s->data = x;
s->next = NULL;
q->rear->next = s; // 把新结点插入到队尾
q->rear = s; // 修改队尾指针
}
// 出队操作
int DeQueue(LinkQueue *q) {
if (q->front == q->rear) { // 判断是否为空队列
return -1;
}
QNode *p = q->front->next; // 取出队头结点
int x = p->data;
q->front->next = p->next; // 删除队头结点
if (q->rear == p) { // 如果删除的是最后一个结点,修改队尾指针
q->rear = q->front;
}
free(p); // 释放被删除结点的空间
return x;
}
int main() {
LinkQueue 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;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)