7. 线性表的定义及特点
本节主要讲了线性表的几个案例和存储方式。
本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频]
1. 线性表案例
1.1 一元多项式的运算:实现两个多项式加、减、乘运算
- 计算和的多项式
指数相同的项的系数依次相加
- 指数项并不是每一项都有,大部分项系数为0的多项式稀疏多项式,如果还按照下标依次存储的话,会造成极大空间浪费。
- 为了减少空间浪费,只需要存储系数不为0的项。
1.2 稀疏多项式的运算
- 稀疏多项式
只存储系数不为0的项,存放系数和指数。
线性表A = ((7, 0), (3, 1), (9, 8), (5, 17))
线性表B = ((8, 1), (22, 7), (-9, 8))
- 创建一个新数组C
- 分别从头遍历比较a和b的每一项
- 一个多项式已遍历完毕时,将另一个剩余项依次复制到c中即可(问题:数组c定义多大合适?)
- 存储空间分配
用链表存储:从头分别遍历A、B两个多项式。从第一项开始比较两个多项式的指数,A的是0,B的是1,A的指数较小,所一保留A的第一项。
比较A、B第二项的指数,都是1,求两个的和11更新到表中
再比较下一项,A的指数是8,B的指数是7,保留较小的7存储
再比较下一项,A、B都是8,系数求和为0,该项不要。此时多项式B中没有元素项了,将多项式A中剩余项依次存入
2.3 图书信息管理系统
一个图书馆有如下文件:需要功能①查找 ②插入 ③删除 ④修改 ⑤排序 ⑥计数。该问题同样可以用线性表来解决
- 图书表抽象为线性表
- 表中每本图书抽象为线性表中的数据元素
存储图书表:顺序表 或者 链表。
选择哪个存储结构需要参考实际情况,比较两种情况异同,各自好处,然后:
- 选择适当的存储结构
- 实现此存储结构上的基本操作(增删查改等)
- 利用基本操作完成功能
2.4 总结
- 线性表中的数据元素的类型可以为简单类型,也可以为复杂类型。
- 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序。
- 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。