数据结构与算法基础-----线性表(1)
2020-03-08 11:42
956 查看
一、线性表的定义与特性
线性表是具有相同特性的数据元素的一个有限序列。
线性表的逻辑特征:
- 在非空线性表中,有且仅有一个开始结点a1 ,它没有直接前趋,而仅有一个直接后继a2。
- 有且仅有一个终端后继an,它没有直接后继,而仅有一个直接前趋。
- 其余内部结点ai(2<=i<=n-1)都有且仅有一个直接前趋ai-1和直接后继ai+1。
例1 :一元多项式
Pn(x)=p0+p1x+p2x2+p3x3+…+pnxn.
线性表P=(p0,p1,p2,p3,…,pn)
(每一项的指数 i 都隐藏其系数的pi的序号中)
如:
P(x)=5+6x+2x2+3x3.
那么我们可以用数组来表示。
指数(下标i) | 系数p[i] |
---|---|
0 | 5 |
1 | 6 |
2 | 2 |
3 | 3 |
例2:稀疏多项式的运算
S(x)=1+2x1000+3x2000.
指数(下标i) | 系数p[i] |
---|---|
0 | 1 |
1 | 0 |
… | … |
1000 | 2 |
… | … |
2000 | 3 |
那么如果我们还是用数组的方式将它们存储起来,将会造成存储空间的浪费,该怎么办呢?
系数p[i] | 指数 |
---|---|
1 | 0 |
2 | 1000 |
3 | 2000 |
我们可以用这种方法来存储数据,那么就可以建立一个线性表
S=((1,0),(2,1000),(3,2000)).
推广如下:
Pn(x)=p1xe1+p2xe2+p3xe3+…+pnxen.
线性表P=((p1,e1),(p2,e2),(p3,e3),…,(pn,en))
例2.1
A:5x+3x3+4x5.
B:2x2+4x3+5x4+7x6.
线性表A=((5,1),(3,3),(4,5))
线性表B=((2,2),(4,3),(5,4),(7,6))
我们如何实现多项式A和B的相加呢?
- 创建一个新数组C
- 分别从头遍历比较a和b的每一项 指数相同,对应系数相加,若其和不为0,则在C中增加一个新项
- 指数不相同,则将指数小的项复制到C中
这里我们又遇到一个问题,数组C多大才合适呢?
由此我们可以看到顺序存储结构存在的问题:
- 存储空间分配不灵活
- 运算的空间复杂度高
接下来,链式存储结构闪亮登场。
例3:图书信息管理系统
需要的功能:
(1)查找 (2)插入 (3)删除 (4)修改 (5)排序 (6)计数
图书表可抽象为线性表。那我们怎么存储它呢?
顺序存储:
链式存储:
那我们选择哪一种存储方式呢?需要根据实际情况来判断,比较两种存储结构实现操作的区别,各有什么好处来选择。
总结
- 线性表中数据元素的类型可以为简单类型,也可以是复杂类型。
- 许多实际应用问题所涉的基本操作具有很大的相似性,不应为每个应用问题都编写一个程序。
- 从应用问题中抽象出共性的逻辑结构和基本操作(即抽象数据类型),然后实现其存储结构和基本操作。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 数据结构与算法基础(二)之线性表的顺序存储
- 数据结构与算法基础(二)之线性表的链式存储与指针的概念
- 线性时间排序
- 线性表
- 线性表的顺序存储结构的基本操作
- 动手学深度学习之线性回归
- 线性代数的一则数据加密应用
- 线性结构CT 02-线性结构1 一元多项式的乘法与加法运算
- 【数据结构专题】线性表之顺序表
- CNN--Keras入门之线性回归与非线性回归
- 图像缩放的双线性内插值算法的原理解析
- 数据结构【线性表(二)链表】项目之单链表:连接
- (数据结构)线性表之顺序表,java实现
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 线性求逆元
- 第三周项目一(3) 线性表的修改
- 如何在同步过程中将数据库日志线性交易转化为并发载入
- ufldl 深度学习入门 第5发 线性解码器
- Deep Learning基础--线性解码器、卷积、池化
- 线性表的创建和操作