C语言指针实现链表操作示例代码
需积分: 1 185 浏览量
更新于2024-09-24
收藏 4KB TXT 举报
"C语言指针链表例子源码,适合初学者学习,包含创建、打印和删除链表节点的功能"
这个资源是一个简单的C语言程序,用于演示如何使用指针操作链表数据结构。链表是一种动态数据结构,它在内存中不连续存储,通过每个节点的指针连接起来。在这个例子中,链表被用来存储学生信息,每个节点(`struct stu_inf`)包含学生的学号(`num`)和姓名(`name`)。
首先,我们定义了一个结构体`struct stu_inf`,其中包含了两个成员:`num`(整型)和`name`(字符数组),以及一个指向下一个节点的指针`next`。结构体定义了链表节点的结构,使得我们可以链接多个节点形成链表。
`creat()`函数是用于创建链表的。它首先初始化`head`(链表头)为`NULL`,然后使用`malloc()`动态分配内存来创建新的节点。`scanf()`函数用于从用户输入中读取学号和姓名,然后将这些信息存储在新创建的节点中。链表的构建是通过不断读取用户输入并创建新节点,直到遇到一个学号为0的记录(通常用作终止标志)。最后,`free(p1)`释放最后一个未使用的节点,`p2->next=NULL`设置最后一个节点的`next`指针为`NULL`,表示链表的结尾。
`print()`函数用于打印链表中的所有记录。它遍历链表,对于每个节点,打印其学号和姓名,直到链表结束(即`p!=NULL`)。
`del()`函数实现了删除指定学号的学生记录。它首先检查链表是否为空,如果为空则直接返回。接着,遍历链表,找到要删除的节点(`num!=p1->num&&p1->next!=NULL`),在找到目标节点之前,将前一个节点的指针`p2->next`更新为当前节点`p1`,以便于后续删除操作。当找到目标节点时,如果它是链表的第一个节点(`head`),则更新`head`为第二个节点;否则,`p2->next`直接指向目标节点的下一个节点。最后,释放目标节点的内存并返回更新后的链表头。
这个源码示例对于理解C语言中的指针操作和链表的基本操作非常有帮助,包括节点的创建、插入、遍历和删除。它展示了如何使用指针变量作为链表节点之间的链接,并且演示了动态内存管理的重要性,如`malloc()`和`free()`的使用。通过这个例子,初学者可以深入理解C语言中数据结构的基础知识。
2023-11-28 上传
2021-10-18 上传
2010-04-11 上传
2024-03-13 上传
2023-03-27 上传
2019-06-18 上传
2021-12-27 上传
点击了解资源详情
点击了解资源详情
gateslu
- 粉丝: 2
- 资源: 11
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析