线性表,从名字上你就能感觉到,是具有像线一样的性质,如同有一根线把他们串联起来了。就可以称之为线性表。
线性表的定义
由n(n≥O)个数据特性相同的元素构成的有限序列称为线性表。
线性表的特点
线性表中元素的个数n(n≥O)定义为线性表的长度,n=O时称为空表。
将非空的线性表(n>O)记作(a1,a2,a3,...,an)
这里的数据元素ai(1≤i≤n)只是个抽象的符号,其具体含义在不同情况下可以不同。
在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2;
有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1;
其余的内部结点ai,(2<i<n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1
线性表的例子
26个英文字母的字母表:(A, B, C, ...,Z);学生信息表;12星座。
同一线性表中的元素必定具有相同的特性,数据元素之间关系是线性的。
案例引入
逻辑结构如何抽象为线性表存储结构呢?
的多项式时,就要用一个长度为20001的线性表来表示,而表中仅有3个非零元素,此时将会造成存储空间的很大浪费,由此可改变元素设定,对多项式的每一项,可用(系数,指数)唯一确定。
每一个系数与指数也构成了一个线性表只不过是线性表的每个数据元素有2个数据项
用结构体数组存储
多项式操作
加法
A=((7,0),(3,1),(9,8),(5,17))[4项]
B=((8,1),(22,7),(-9,8),)[3项]
创建一个新的多项式c用来存放a与b和
分别从头遍历比较a和b的每一项
指数相同,对应系数相加,若其和不为零,则在c中增加一个新项
指数不相同,则将指数较小的项复制到c中
一个多项式已遍历完毕时,将另一个剩余项依次复制到c中即可
和有多少项呢?
最少:指数一样,系数正好互为相反数项数为0最多指数都不一样项数为元素个数之和。项数不容易确定太大了浪费空间,太小了放不下。
顺序存储结构存在问题存储空间分配不灵活;运算的空间复杂度高
尝试链式存储结构(不需要额外的空间只利用已有的空间)
逻辑结构:根据图书表的特点将其抽象成一个线性表,每本图书作为线性表中的一个元素
存储结构:
a.顺序
b.链式
比较这两种存储结构的优缺点根据实际情况,选择适当的存储结构,实现此存储结构上的基本操作,利用基本操作完成功能