参考网课数据结构-青岛大学-王卓-第四周
参考书籍《数据结构C语言版第二版》 中国工信出版集团 人民邮电出版社出版 严蔚敏 编著
应用
线性表的合并
效果::集合的并集
有序表的合并——用顺序表
时间复杂度和空间复杂度都是:
Note
表达式
*pc++=*pa++
可以分解为以下步骤:
*pc
表示访问指针pc
指向的值。*pa
表示访问指针pa
指向的值。*pa++
表示先将pa
指针指向的值取出,然后将pa
指针向前移动一个单位。*pc++
表示先将pc
指针指向的值取出,然后将pc
指针向前移动一个单位。- 最后将
*pa
的值赋给*pc
。
Note
++p
(前缀递增):
- 这种操作首先增加指针
p
的值,然后再返回增加后的指针。- 这意味着指针
p
被增加后,返回的指针是新的地址,指向增加后的内存位置。- 通常用于需要获取新指针值的场景。
p++
(后缀递增):
- 这种操作首先返回指针
p
的当前值,然后将指针p
增加。- 这意味着指针
p
被增加前,返回的指针是原始地址,指向增加前的内存位置。- 通常用于需要在增加指针前使用原始指针值的场景。
有序表的合并——用链表
时间复杂度; 空间复杂度。
Hint
此处的表长之和之所以不写成是因为无法确定两个表的长度是否关联关系。 如:
案例
实现两个多项式的相加
输入系数,并顺序存储。
求和。
输出结果。
实现稀疏多项式的运算
多项式的链式储存结构:两个数据域+一个指针域
稀疏多项式的创建
稀疏多项式的相加的思路
- 设置三个指针Pa,Pb,Pc
- 前两个指针分别指向两个待加表的首元节点
- 第三个指针初始指向Pa的头结点,表示求和之后的表
- 当Pa和Pb均未到达表尾时,循环比较两个指针指向节点的存储指数大小
- 当存储的指数大小相同
- 当存储的系数加和为0,删除Pa,Pb指向的节点。
- 当存储的系数加和不为0,修改Pa指向的节点的系数值,删除Pb指向的节点。
- 当存储的指数大小不同
- 将指数相对小的节点插入求和之后的表。
- 当存储的指数大小相同
- 对长的那个链表,将非空多项式的剩余段插入Pc节点之后
- 释放Pb的头结点
图书管理系统
Book
类型的定义
顺序表的写法
链表的写法