数据结构与算法学习笔记:线性表Ⅰ
Posted 临风而眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法学习笔记:线性表Ⅰ相关的知识,希望对你有一定的参考价值。
数据结构与算法学习笔记(3):线性表Ⅰ
本系列笔记为跟着B站上王卓老师的教程学习所记录的笔记
文章目录
2.1线性表的定义和特点
2.2案例引入
2.3线性的类型定义
2.4线性表的顺序表示和实现
2.5线性表的链式表示和实现
2.6顺序表和链表的比较
2.7线性表的应用
2.8案例分析与实现
一.线性表的定义和特点
1.定义
线性表是具有相同特性的数据元素的一个有限序列
- 由n(n≥0)个数据元素(结点)
a
1
,
a
2
,
.
.
.
a
n
a_1,a_2,...a_n
a1,a2,...an组成的有限序列
- 元素个数n定义为表的长度
- n=0时称为空表
- 非空的线性表(n>0)记作: ( a 1 , a 2 , . . . a n ) (a_1,a_2,...a_n) (a1,a2,...an)
- 数据元素 a i a_i ai只是一个抽象符号,不同情况下代表不同内容
2.特点
- 同一线性表中的元素必须具有相同特性,数据元素间的关系是线性关系
线性表的逻辑特征
在非空线性表中:
- 有且仅有一个开始结点 a 1 a_1 a1,它无直接前趋,仅有一个直接后继 a 2 a_2 a2
- 有且仅有一个终端结点 a n a_n an,它无直接后继,仅有一个直接前趋 a n − 1 a_{n-1} an−1
- 其余的内部结点 a i ( 2 ⩽ i ⩽ n − 1 ) a_i(2\\leqslant i \\leqslant n-1) ai(2⩽i⩽n−1)都有且仅有一个直接前趋 a i − 1 a_{i-1} ai−1和一个直接后继 a i + 1 a_{i+1} ai+1
线性表是一种典型的线性结构
二.典型案例
1.一元多项式运算
实现两个多项式的加减乘运算
P n ( x ) = p 0 + p 1 x + p 2 x 2 + . . . + p n x n P_n(x)=p_0+p_1x+p_2x^2+...+p_nx^n Pn(x)=p0+p1x+p2x2+...+pnxn
-
构造线性表 P = ( p 0 , p 1 , p 2 , . . . p n ) P=(p_0,p_1,p_2,...p_n) P=(p0,p1,p2,...pn)
每一项的指数i就是其系数 p i p_i pi的序号
-
怎么表示存储系数呢?
-
利用数组
- 下标i为指数,p[i]为系数
-
利用数组可实现多项式相加
R n ( x ) = P n ( x ) + Q n ( x ) R_n(x)=P_n(x)+Q_n(x) Rn(x)=Pn(x)+Qn(x)
线性表 R = ( p 0 + q 0 , p 1 + q 1 , p 2 + q 2 , . . . , p m + q m , . . . , p n + q n ) R=(p_0+q_0,p_1+q_1,p_2+q_2,...,p_m+q_m,...,p_n+q_n) R=(p0+q0,p1+q1,p2+q2,...,pm+qm,...,pn+qn)
-
这样开辟数组适用于所有情况吗?
-
如果不是每一个指数的项都存在,那就会很浪费空间
-
解决办法:
- 由此引入👇下面的案例
-
-
2.稀疏多项式
-
稀疏多项式
P n ( x ) = p 1 x e 1 + p 2 x e 2 + . . . + p n x e n P_n(x)=p_1x^{e_1}+p_2x^{e_2}+...+p_nx^{e_n} Pn(x)=p1xe1+p2xe2+...+pnxen
线性表 P = ( ( p 1 , e 1 ) , ( p 2 , e 2 ) , . . . , ( p n , e n ) P=((p_1,e_1),(p_2,e_2),...,(p_n,e_n) P=((p1,e1),(p2,e2),...,(pn,en)
-
上面的 A ( x ) A(x) A(x)线性表可表示为 A = ( ( 7 , 0 ) , ( 3 , 1 ) , ( 9 , 8 ) , ( 5
以上是关于数据结构与算法学习笔记:线性表Ⅰ的主要内容,如果未能解决你的问题,请参考以下文章