数据结构:
包括数据的逻辑结构,数据的存储结构,数据的运算
线性表是 逻辑结构中 线性关系 的一种
线性表 是具有相同特性的数据元素的一个有限序列(有前驱和后继)
定义 由元素组成的有限序列
特点 1 .元素必须具有相同的特性,数据元素之间是线性关系
2.是一种典型的线性结构
**案例1一元多项式的运算
(对于稀疏多项式,只存下来指数和系数就行)
两个多项式相加计算方法:
顺序存储新创建一个数组C
指数相同:对应系数相加,若和不为零,则在C中新增一个项
指数不相同:则将指数较小的项复制到C中
**案例2
图书信息管理
步骤:
选择存储结构
实现此存储结构的基本操作
利用基本操作完成功能
##案例小总结
1 线性表数据元素的类型可以为简单类型,也可以为复杂类型
2 许多实际应用问题涉及的基本操作有很大的相似性,不应为每个具体应用单独编写一个程序
3 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。
线性表的类型定义
抽象数据类型线性表的定义
ADT…
基本操作函数
InitList(&L) 操作结果:构造一个空的L线性表
DestroyList(&L) 表要存在 摧毁表
ClearList(&L) 表要存在 使表内置为空
ListEmpty(L) 表要存在
操作结果:表空返回NULL,否则返回FALES
ListLength(L) 表要存在 能够计算出线性表元素的个数
GetElem(L,i,&e);
初始条件:线性表L存在,1<=i<=L长
操作结果:用e返回线性表L中第i个数据元素的值
LocateElem(L,e,compare()) (元素定位)
操作条件:表存在,compare()是数据元素的判断函数。
操作结果:返回L中第一个与e满足compare()的数据元素的位序,如果这样的数据元素不存在返回0。
PriorElem(L,cur,_e,&pre_e)
操作条件:表存在
操作结果:若cur_e是L的数据元素,且不是第一个,则pre_e返回他的前驱,否则操作失败,pre_e无意义。
NextElem(L,cur_e,&next_e)
操作结果:若cur_e是L数据元素且不是最后一个,则用next_e,返回他的后继,否则操作失败,next_e无意义
ListInsert(&L,i,e) (元素插入)
i 的范围 1<=i<=L长+1
ListDelete(&L,i,&e) ( 删除函数)
操作结果 :删除L的第I个数据元素,并且e返回其数值,L的长度减一
List Traverse(&L,visit(ed())
操作结果:
依次对线性表中的元素调用visited()函数
这些运算只是逻辑结构定义运算,功能和实现是属于存储结构