本文是个人笔记,仅用于学习分享,素材来自青岛大学王卓老师的教学视频,如有侵权,请留言作删文处理。
📚 Week02_02_线性表案例引入
【案例2.1】一元多项式的运算
实现两个一元多项式加、减、乘运算
例如:
用数组来表示指数和系数
则一元多项式相加,就是各对应指数的系数相加:
【案例2.2】稀疏多项式的运算
稀疏多项式时,
稀疏多项式只有3项,如果用数组存储,需要20001个存储空间,19998个是空着的。
❓ 用数组存储稀疏多项式的系数会造成存储空间很大的浪费,怎么办?
💬 不用存那么多项,只需要记住指数为0的系数,指数为10000的系数和指数为20000的系数即可。
多项式非零项的数组表示
稀疏多项式
转换为线性表
对于稀疏多项式,把系数不为零的项的系数和指数存储起来,每一项的系数和指数就构成了线性表。
只不过此时的每一个数据元素有两项。
则求多项式 A 与多项式 B 的和
(1) 创建一个新数组 C
(2) 分别从头遍历比较 a 和 b 的每一项
📌 指数相同,对应系数相加,若其和不为零,则在 C 中增加一个新项
📌 指数不相同,则将指数较小的项复制到 C 中
(3) 一个多项式已遍历完毕时,将另一个剩余项依次复制到 C 中即可。
❓ 数组 C 多大合适 ?
计算过程
(1)
(2)
(3)
(4)
(5)
【案例2.3】图书信息管理系统
需要的功能:
(1) 查找 (2) 插入 (3) 删除 (4) 修改 (5) 排序 (6) 计数
📌 图书表抽象为线性表
📌 表中每本图书抽象线性表中数据元素
图书顺序表
图书链表
❓ 解决实际问题的步骤?
💬 选择适当的存储结构
💬 实现此存储结构上的基本操作
💬 利用基本操作完成功能
总结
🔸 线性表中数据元素的类型可以是简单类型,也可以是复杂类型。
🔸 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序。
🔸 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。
学习笔记最后有微信公众号:惟CPP,欢迎关注,一起交流学习进步~