目录


⏳一、线性表的定义和特点及案例引入

1.线性表的定义和特点

了解线性表内元素的关系,在此我用图把它们的关系罗列出来。

【数据结构】——拿捏顺序表 ( 详细 )_增删查改

【数据结构】——拿捏顺序表 ( 详细 )_C语言_02


2.案例引入

(1) 一元多项式的运算

了解每一项的指数与其在线性表中的对应关系。

【数据结构】——拿捏顺序表 ( 详细 )_增删查改_03

创建新数组c,分别从头遍历比较a和b的每一项,指数相同,对应系数相加,若其和不为零,则在c中增加一个新项。指数不相同,则将指数较小的项复制到c中。当一个多项式已遍历完毕时,将另一个剩余项依次复制到c中即可。

【数据结构】——拿捏顺序表 ( 详细 )_数据结构_04


(2) 稀疏多项式的运算

对于稀疏多项式,每个项的指数不再代表一个数组的下标,因此分别要开辟空间存放系数和指数。

【数据结构】——拿捏顺序表 ( 详细 )_增删查改_05

对于指数不是依次增加的多项式,要学会如何去存储数据。

例如:

【数据结构】——拿捏顺序表 ( 详细 )_C语言_06

因此当我们在存储上面两个多项式时,如果仍然使用顺序表进行存储,则缺点有:

(1)存储空间分配不灵活。(2)运算的空间复杂度高。我们应该使用链式结构进行存储。

【数据结构】——拿捏顺序表 ( 详细 )_顺序表_07

进行上面两个多项式的相加:

分析:首先我们从A的结点开始,往后一位则是指数为0,系数为7的结点,与B进行比较,发现B中没有指数为0的结点,我们不作处理,再对链表A后面的结点进行分析。

发现链表A与链表B都有指数为1的结点,则将它们的系数相加放在链表A中。以此类推进行分析。过程与结果如下图:

【数据结构】——拿捏顺序表 ( 详细 )_线性表_08

【数据结构】——拿捏顺序表 ( 详细 )_C语言_09

小结:
(1) 线性表中数据元素的类型可以为简单类型,也可以为复杂类型。
(2) 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序,过于耗费成本。
(3) 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。


⚾二、线性表的类型定义

线性表主要分为顺序表与链表,它们的重要基本操作有初始化、取值、查找、插入、删除。顺序表的存储方式为随机存储,链表的存储方式为顺序存储。

顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。简言之,逻辑上相邻,物理上也相邻。

顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组arr[n]来实现。