news 2026/3/27 18:22:55

C语言数据结构-链表实现队列详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言数据结构-链表实现队列详解

链表是一种动态数据结构,通过节点间的指针连接实现数据存储。队列是一种先进先出的线性结构,链表实现队列可以避免数组实现时的空间限制问题。

  • 入队:从队尾加入

  • 出队:从队首移除

一、数据结构定义

两个节点:

  • front:总指向第一个节点(出队端)

  • rear:总指向最后一个节点(入队端)

#include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; }Node; //取别名 Node* front = NULL; // 队首指针 Node* rear = NULL; // 队尾指针

二、代码详解

2.1 入队操作(add_queue)

步骤:创建新节点 → 连接队尾 → 更新rear

void add_queue(int value) { // 步骤1:创建新节点 // malloc分配内存,类似:新建一个"盒子" Node* new_node = (Node*)malloc(sizeof(Node)); new_node->data = value; new_node->next = NULL; // 步骤2:判断队列是否为空 if (rear == NULL) { // 队列为空时,新节点既是队首也是队尾 front = new_node; // 队首指向新节点 rear = new_node; // 队尾也指向新节点 } else { // 队列不为空时 rear->next = new_node; // 当前队尾的下一个指向新节点 rear = new_node; // 队尾指针更新为新节点 } }

2.2 出队操作(del_queue)

步骤:保存front → 移动front → 检查是否变空 → 释放内存

int del_queue() { // 步骤1:检查队列是否为空 if (front == NULL) { return -1; // 队列为空 } // 步骤2:保存要删除的节点 Node* temp = front; // temp指向队首 int value = temp->data; // 保存数据 // 步骤3:移动front指针 front = front->next; // front指向下一个节点 // 步骤4:如果出队后队列为空,重置rear if (front == NULL) { rear = NULL; } // 步骤5:释放内存 free(temp); return value; }

2.3 打印队列(print_queue)

void print_queue() { if (front == NULL) { printf("队列为空!\n"); return; } Node* current = front; // 从队首开始 while (current != NULL) { printf("%d ", current->data); current = current->next; // 移动到下一个节点 } printf("\n"); }

2.4 清空队列(clear_queue)

void clear_queue() { while (front != NULL) { del_queue(); } printf("队列已清空!\n"); }

2.4 主函数main

int main() { int a, b, c; a = 10; b = 20; c = 30; printf("=== 链表实现队列测试 ===\n\n"); // 测试入队 printf("1. 测试入队操作:\n"); add_queue(a); add_queue(b); add_queue(c); print_queue(); // 测试获取队首 printf("\n2. 获取队首元素:%d\n", get_front()); // 测试出队 printf("\n3. 测试出队操作:\n"); del_queue(); print_queue(); // 继续入队 printf("\n4. 继续入队:\n"); add_queue(40); add_queue(50); print_queue(); // 出队所有元素 printf("\n5. 出队所有元素:\n"); while (front != NULL) { del_queue(); } print_queue(); // 测试空队列操作 printf("\n6. 测试空队列操作:\n"); del_queue(); // 应该提示队列为空 return 0; }

三、运行结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 7:45:09

Linly-Talker在金融客服中的落地实践案例分享

Linly-Talker在金融客服中的落地实践案例分享 在银行业务大厅的智能终端前&#xff0c;一位中年客户正对着屏幕上的虚拟柜员提问&#xff1a;“上个月基金亏损严重&#xff0c;我该继续持有吗&#xff1f;”不到两秒&#xff0c;这位身着银行制服、面容亲和的“数字理财顾问”便…

作者头像 李华
网站建设 2026/3/24 9:18:47

重工业、轻工业和复杂装备行业的设备维护策略制定:目标、策略、实施框架和工具等的差异

在工业生产领域,不同类型的设备和系统因其运行模式、价值、复杂性和在生产流程中的关键性不同,对维护目标的选择和优先级排序有着显著差异。将统一的维护策略应用于所有设备,不仅效率低下,而且可能导致资源错配和潜在风险的忽视。因此,根据设备的具体特性,量体裁衣地选择…

作者头像 李华
网站建设 2026/3/24 20:54:52

医疗健康领域应用:Linly-Talker构建智能导诊数字人

Linly-Talker&#xff1a;构建医疗智能导诊数字人的全栈实践 在智慧医院建设提速的今天&#xff0c;患者一进门诊大厅就面对长长的导诊队伍、重复的问题被问了一遍又一遍&#xff0c;而导医人员却疲于应付基础咨询——这样的场景正逐渐成为过去式。越来越多的医疗机构开始探索用…

作者头像 李华
网站建设 2026/3/24 16:59:20

索尼腾讯握手言和:侵权官司收场,合作再升级!

近日&#xff0c;备受业界关注的索尼诉腾讯游戏侵权案终于迎来尾声。双方在法院调解下达成保密和解&#xff0c;正式“握手言和”&#xff0c;并宣布将在多个项目上继续深化合作。此事不仅结束了长达半年的法律拉锯&#xff0c;也为中日两大游戏巨头在全球市场的协同打开了新局…

作者头像 李华
网站建设 2026/3/22 13:35:06

Linly-Talker表情驱动揭秘:情感化数字人的关键技术突破

Linly-Talker表情驱动揭秘&#xff1a;情感化数字人的关键技术突破 在虚拟主播直播间里&#xff0c;一个面容亲切的数字人正微笑着回答观众提问&#xff0c;她的口型与语音完美同步&#xff0c;说到动情处眼神闪烁、眉头轻扬&#xff0c;仿佛真有情绪流动。这不是电影特效&…

作者头像 李华