立即注册
查看: 4134|回复: 4

[资料] 《C语言高级专题——链表&状态机与多线程》

已绑定手机
发表于 2021-6-29 11:36:28 | 显示全部楼层 |阅读模式 来自 广东省深圳市
第一部分、章节目录
4.9.1.链表的引入
4.9.2.单链表的实现
4.9.3.单链表的算法之插入节点
4.9.4.单链表的算法之插入节点续
4.9.5.从链表头部插入新节点
4.9.6.单链表的算法之遍历节点
4.9.7.单链表的算法之删除节点
4.9.8.单链表的算法之逆序
4.9.9.双链表的引入和基本实现
4.9.10.双链表的算法之插入节点
4.9.11.双链表的算法之遍历节点
4.9.12.双链表的算法之删除节点
4.9.13.linux内核链表
4.9.14.内核链表的基本算法和使用简介       
4.9.15.什么是状态机
4.9.16.C语言实现简单的状态机
4.9.17.多线程简介

4.9.1.3、链表是什么样的?
(1)顾名思义,链表就是用锁链连接起来的表。这里的表指的是一个一个的节点(一个节点就是一个校区),节点中有一些内存可以用来存储数据(所以叫表,表就是数据表);这里的锁链指的是链接各个表的方法,C语言中用来连接2个表(其实就是2块内存)的方法就是指针。
(2)链表是由若干个节点组成的(链表的各个节点结构是完全类似的),节点是由有效数据和指针组成的。有效数据区域用来存储信息完成任务的,指针区域用于指向链表的下一个节点从而构成链表。

4.9.1.4、时刻别忘了链表是用来干嘛的
(1)时刻谨记:链表就是用来解决数组的大小不能动态扩展的问题,所以链表其实就是当数组用的。直白点:链表能完成的任务用数组也能完成,数组能完成的任务用链表也能完成。但是灵活性不一样。
(2)简单说:链表就是用来存储数据的。链表用来存数据相对于数组来说优点就是灵活性,需要多少个动态分配多少个,不占用额外的内存。数组的优势是使用简单(简单粗暴)。

4.9.2.单链表的实现
4.9.2.1、单链表的节点构成
(1)链表是由节点组成的,节点中包含:有效数据和指针。
(2)定义的struct node只是一个结构体,本身并没有变量生成,也不占用内存。结构体定义相当于为链表节点定义了一个模板,但是还没有一个节点,将来在实际创建链表时需要一个节点时用这个模板来复制一个即可。

4.9.2.2、堆内存的申请和使用
(1)链表的内存要求比较灵活,不能用栈,也不能用data数据段。只能用堆内存。
(2)使用堆内存来创建一个链表节点的步骤:1、申请堆内存,大小为一个节点的大小(检查申请结果是否正确);2、清理申请到的堆内存;3、把申请到的堆内存当作一个新节点;4、填充你哦个新节点的有效数据和指针区域。

4.9.2.3、链表的头指针
(1)头指针并不是节点,而是一个普通指针,只占4字节。头指针的类型是struct node *类型的,所以它才能指向链表的节点。
(2)一个典型的链表的实现就是:头指针指向链表的第1个节点,然后第1个节点中的指针指向下一个节点,然后依次类推一直到最后一个节点。这样就构成了一个链。

4.9.2.4、实战:构建一个简单的单链表
(1)目标:构建一个链表,然后将一些数据(譬如1,2,3三个数字)存储在链表中。

更多详细内容请下载附件查看
游客,如果您要查看本帖隐藏内容请回复

发表于 2021-11-2 21:07:49 | 显示全部楼层 来自 广东省深圳市宝安区
谢谢楼主分享
已绑定手机
发表于 2021-11-22 16:52:13 | 显示全部楼层 来自 广东省深圳市
谢谢分享
已绑定手机
已实名认证
发表于 2021-11-22 17:37:04 | 显示全部楼层 来自 江苏省苏州市
已绑定手机
发表于 2023-11-2 14:49:55 | 显示全部楼层 来自 山东省青岛市
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表