引入
上一节,我们讲了如何建立一个静态链表,今天我们就来说说如何建立一个动态链表。还记得他们的区别吗?
静态链表
所有结点都是手动创建的,不是程序创建的。
不能随时创建和随时释放。
动态链表
在程序执行过程中,从无到有地建立
起一个链表,即一个一个地开辟结点和输入各个结点数据,并建立起先后相连的关系
的链表为动态链表
。
例子引入
建立有3名学生的单向动态链表
1 |
|
输出结果
输入:
0101001 88.6
101002 77.4
101003 95.3
0 0
学号是:101001
成绩是:88.6
代码逐行解析
1 |
|
解析
一定要养成以下重要的思路:
- 谈起链表,一定有表头、表尾
- 头指针,设置计数,如果是第一个结点,将地址传递给头指针,搞定。
- 表尾,设置条件,判断为最后一个结点,将尾节点的 next 地址设置为 NULL,即 0;
- 传递地址,使用替身,p2 为 p1的替身,p1 已经是新地址了,p2 还是老结点,就可以存储 p1 的新地址了,循环往复。
- 记得返回的是表头,链表很有趣,知道表头就能知道链表中所有结点的情况,切记。
- 我们在创建动态存储空间时,地址大小一定要匹配,使用
sizeof (类型名)
就能准确获取该系统中该类型的存储空间了。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。