《数据结构》线性表的定义顺序表示和实现.ppt
《《数据结构》线性表的定义顺序表示和实现.ppt》由会员分享,可在线阅读,更多相关《《数据结构》线性表的定义顺序表示和实现.ppt(34页珍藏版)》请在三一办公上搜索。
1、第1章 绪论第2章 线性表第3章 栈和队列 第4章 串第6章 树和二叉树 第7章 图第9章 查找第10章 排序,目 录,数据结构课程的起点:,什么是线性结构?,线性结构的基本特征:,1集合中必存在唯一的一个“第一元素”;,2集合中必存在唯一的一个“最后元素”,3除最后元素在外,均有 唯一的后继;,4除第一元素之外,均有 唯一的前驱。,线性结构 是一个数据元素的有序(次序)集,特点:一对一,第2章 线性表,2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现2.4 应用举例,(a1,a2,ai-1,ai,ai1,,an),2.1 线性表的逻辑结构,线性表的定义:
2、用数据元素的有限序列表示,n=0时称为,数据元素,线性起点,ai的直接前趋,ai的直接后继,下标,是元素的序号,表示元素在表中的位置,n为元素总个数,即表长。n0,空表,线性终点,(A,B,C,D,Z),例2 分析学生情况登记表是什么结构。,分析:数据元素都是同类型(字母),元素间关系是线性的。,例1 分析26 个英文字母组成的英文表是什么结构。,“同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数都相等。,是指各元素具有相同的数据类型,试判断下列叙述的正误:,注意:同一线性表中的元素必定具有相同特性!,分析:数据元素都是同类型(记录),元素间关系是线性的。,抽
3、象数据类型线性表的定义如下:,ADT List,数据对象:,D ai|ai ElemSet,i=1,2,.,n,n0,数据关系:,R1|ai-1,aiD,i=2,.,n,基本操作:,结构初始化操作,结构销毁操作,引用型操作,加工型操作,ADT List,InitList(&L),操作结果:构造一个空的线性表L,结构初始化操作,结构销毁操作,DestroyList(&L),初始条件:线性表L已存在操作结果:销毁线性表L,引用型操作:,ListEmpty(L)/判空 ListLength(L)/表长,PriorElem(L,cur_e,&pre_e)/前驱 NextElem(L,cur_e,&ne
4、xt_e)/后继,GetElem(L,i,&e)/读取 LocateElem(L,e,compare()/查找,ListTraverse(L,visit()/遍历,加工型操作,ClearList(&L)/清空,PutElem(&L,i,&e)/改写,ListInsert(&L,i,e)/插入,ListDelete(&L,i,&e)/删除,例1:假设:有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即:线性表中的数据元素即为集合中的成员。现要求一个新的集合AAB。,即扩大线性表 LA,将存在于线性表LB 中而不存在于线性表 LA 中的数据元素插入到线性表 LA 中去。,操作步骤:
5、,1从线性表LB中依次察看每个数据元素;,2依值在线性表LA中进行查访;,GetElem(LB,i)e,LocateElem(LA,e,equal(),3若不存在,则插入之。,ListInsert(LA,n+1,e),GetElem(Lb,i,e);/取Lb中第i个数据元素赋给e if(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La中不存在和 e 相同的数据元素,则插入之,void union(List,for(i=1;i=Lb_len;i+),/union,集合 B,集合 A,从集合 B 取出物件放入集合 A要求集合A中不能有同样物件
6、,因此,算法的策略应该和例1相同,例2:已知一个非纯集合 B,试构造一个纯集合 A,使 A中只包含 B 中所有值各不相同的数据元素。,void union(List/union,GetElem(Lb,i,e);/取Lb中第 i 个数据元素赋给 e if(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La中不存在/和 e 相同的数据元素,则插入之,for(i=1;i=Lb_len;i+),InitList(La);/构造(空的)线性表LA,若线性表中的数据元素相互之间可以比较,并且数据元素在线性表中依值非递减或非递增有序排列,即 aiai-1
7、 或 aiai-1(i=2,3,n),则称该线性表为有序表(Ordered List)。,试改变结构,以有序表表示集合。,例如:(2,3,3,5,6,6,6,8,12),对集合 B 而言,值相同的数据元素必定相邻,对集合 A 而言,数据元素依值从小至大的顺序插入,因此,数据结构改变了,解决问题的策略也相应要改变。,则,例3:归并两个“其数据元素按值非递减有序排列”的有序表 LA 和 LB,求得有序表 LC 也具有同样特性。,设 La=(a1,ai,an),Lb=(b1,bj,bm)Lc=(c1,ck,cm+n)且已由(a1,ai-1)和(b1,bj-1)归并得(c1,ck-1),k=1,2,m
8、+n,1初始化 LC 为空表;,基本操作:,2分别从 LA和LB中取得当前元素 ai 和 bj;,3若 aibj,则将 ai 插入到 LC 中,否则将bj 插入到 LC 中;,4重复 2 和 3 两步,直至 LA 或 LB 中元素被取完为止;,5将 LA 表或 LB 表中剩余元素复制插入到LC 表中。,算法见教材 P21,返 回,2.2 线性表的顺序表示和实现,2.2.1 顺序表的表示2.2.2 顺序表的实现2.2.3 顺序表的运算效率分析,2.2.1 顺序表的表示,用一组地址连续的存储单元依次存储线性表的元素。,把逻辑上相邻的数据元素存储在物 理上相邻的存储单元中的存储结构。,线性表的顺序表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 定义 顺序 表示 实现
链接地址:https://www.31ppt.com/p-5898661.html