数据结构与算法学习笔记:线性表Ⅰ

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} an1
  • 其余的内部结点 a i ( 2 ⩽ i ⩽ n − 1 ) a_i(2\\leqslant i \\leqslant n-1) ai(2in1)都有且仅有一个直接前趋 a i − 1 a_{i-1} ai1和一个直接后继 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.稀疏多项式