2线性表(福建教师招考信息技术算法和程序部分)1193.pptx
《2线性表(福建教师招考信息技术算法和程序部分)1193.pptx》由会员分享,可在线阅读,更多相关《2线性表(福建教师招考信息技术算法和程序部分)1193.pptx(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 线形表数据结构数据结构3/25/20232 2数据结构数据结构1 1、线性表线性表(Linear List)(Linear List):定义:定义:定义:定义:由由由由n(n0)n(n0)n(n0)n(n0)个数据元素个数据元素个数据元素个数据元素(结点结点结点结点)a)a)a)a1 1 1 1,a a a a2 2 2 2,a a a an n n n组成的有限序列。记组成的有限序列。记组成的有限序列。记组成的有限序列。记作:作:作:作:L=(a L=(a L=(a L=(a1 1 1 1,a a a a2 2 2 2,aaaai-1i-1i-1i-1,a a a ai i i i,
2、a a a ai+1i+1i+1i+1,aaaan n n n)其中数据元素的个数其中数据元素的个数其中数据元素的个数其中数据元素的个数n n n n定义为表的长度。当定义为表的长度。当定义为表的长度。当定义为表的长度。当n=0n=0n=0n=0时称为空表,常时称为空表,常时称为空表,常时称为空表,常常将非空的线性表常将非空的线性表常将非空的线性表常将非空的线性表(n0)(n0)(n0)(n0)这里的数据元素这里的数据元素这里的数据元素这里的数据元素a a a ai i i i(1in)(1in)(1in)(1in)只是一个只是一个只是一个只是一个抽象的符号,其具体含义在不同的情况下可以不同。
3、抽象的符号,其具体含义在不同的情况下可以不同。抽象的符号,其具体含义在不同的情况下可以不同。抽象的符号,其具体含义在不同的情况下可以不同。例例例例1 1 1 1、26262626个英文字母组成的字母表个英文字母组成的字母表个英文字母组成的字母表个英文字母组成的字母表 (A A A A,B B B B,C C C C、Z Z Z Z)例例例例2 2 2 2、某校从、某校从、某校从、某校从1978197819781978年到年到年到年到1983198319831983年各种型号的计算机拥有量的变化情年各种型号的计算机拥有量的变化情年各种型号的计算机拥有量的变化情年各种型号的计算机拥有量的变化情况。
4、况。况。况。(6 6 6 6,17171717,28282828,50505050,92929292,188188188188)数据结构数据结构3/25/20233 3数据结构数据结构例例例例3 3 3 3、学生健康情况登记表如下:、学生健康情况登记表如下:、学生健康情况登记表如下:、学生健康情况登记表如下:例例例例4 4 4 4、一副扑克的点数、一副扑克的点数、一副扑克的点数、一副扑克的点数 (2 2 2 2,3 3 3 3,4 4 4 4,J J J J,Q Q Q Q,K K K K,A A A A)姓姓姓姓 名名名名学学学学 号号号号性性性性 别别别别年龄年龄年龄年龄 健康情况健康情况
5、健康情况健康情况王小林王小林王小林王小林790631790631 男男男男 18 18 健康健康健康健康陈陈陈陈 红红红红790632790632 女女女女 20 20 一般一般一般一般刘建平刘建平刘建平刘建平790633790633 男男男男 21 21 健康健康健康健康张立立张立立张立立张立立790634790634 男男男男 17 17 神经衰弱神经衰弱神经衰弱神经衰弱.数据结构数据结构3/25/20234 4数据结构数据结构线性表线性表 元素及元素之间的关系为线性元素及元素之间的关系为线性线性:线性:线性:线性:(1 1 1 1)有且仅有一个开始节点(该节点只有一个后继节点,没有前趋节
6、点)有且仅有一个开始节点(该节点只有一个后继节点,没有前趋节点)有且仅有一个开始节点(该节点只有一个后继节点,没有前趋节点)有且仅有一个开始节点(该节点只有一个后继节点,没有前趋节点)(2 2 2 2)有且仅有一个结束节点(该节点只有一个前趋节点,没有后继节点)有且仅有一个结束节点(该节点只有一个前趋节点,没有后继节点)有且仅有一个结束节点(该节点只有一个前趋节点,没有后继节点)有且仅有一个结束节点(该节点只有一个前趋节点,没有后继节点)(3 3 3 3)除首节点,其余节点有且仅有一个前趋)除首节点,其余节点有且仅有一个前趋)除首节点,其余节点有且仅有一个前趋)除首节点,其余节点有且仅有一个前
7、趋k1k2k3k4k1k2k3(4 4 4 4)除尾节点,其余节点有且仅有一个后继)除尾节点,其余节点有且仅有一个后继)除尾节点,其余节点有且仅有一个后继)除尾节点,其余节点有且仅有一个后继数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。数据结构数据结构3/25/20235 5数据结构数据结构线性表的类型定义线性表的类型定义抽象数据类型线性表的定义抽象数据类
8、型线性表的定义 ADT List 数据对象数据对象:D ai|ai ElemSet,i=1,2,.,n,n0 数据关系数据关系:R1|ai-1,aiD,i=2,.,n 基本操作基本操作:初始化初始化 InitList(&L)操作结果:构造一个空的线性表L。结构销毁结构销毁 DestroyList(&L)初始条件:线性表L已存在。操作结果:销毁线性表L。引用型操作引用型操作 ListEmpty(L)初始条件:线性表L已存在。操作结果:若L为空表,则返回TRUE,否则FALSE。ListLength(L)初始条件:线性表L已存在。操作结果:返回L中元素个数。数据结构数据结构3/25/20236 6
9、数据结构数据结构ADT ListADT ListGetElem(L,i,GetElem(L,i,&e)e)初始条件:线性表初始条件:线性表L L已存在,已存在,1iLengthList(L)1iLengthList(L)操作结果:用操作结果:用e e返回返回L L中第中第i i个元素的值。个元素的值。LocateElem(L,e,compare()LocateElem(L,e,compare()初始条件:线性表初始条件:线性表L L已存在,已存在,compare()compare()是元素判定函数。是元素判定函数。操作结果:返回操作结果:返回L L中中第第第第1 1个个个个与与e e满足满足满
10、足满足关系关系 compare()compare()的元素的位序。若这样的的元素的位序。若这样的元素不存在,则返回值为元素不存在,则返回值为0 0。PriorElem(L,cur_e,PriorElem(L,cur_e,&pre_e)pre_e)初始条件:线性表初始条件:线性表L L已存在。已存在。操作结果:若操作结果:若cur_ecur_e是是L L的元素,但不是第一个,则用的元素,但不是第一个,则用pre_e pre_e 返回它的前驱,返回它的前驱,否则操作失败,否则操作失败,pre_epre_e无定义。无定义。NextElem(L,cur_e,NextElem(L,cur_e,&next
11、_e)next_e)初始条件:线性表初始条件:线性表L L已存在。已存在。操作结果:若操作结果:若cur_ecur_e是是L L的元素,但不是最后一个,则用的元素,但不是最后一个,则用next_enext_e返回它的后继,返回它的后继,否则操作失败,否则操作失败,next_enext_e无定义。无定义。ListTraverse(L,visit()ListTraverse(L,visit()初始条件:线性表初始条件:线性表L L已存在。已存在。操作结果:操作结果:依次依次依次依次对对L L的每个元素调用函数的每个元素调用函数 visit()visit()。一旦。一旦visit()visit()失
12、败,则操作失失败,则操作失败。败。数据结构数据结构3/25/20237 7数据结构数据结构ADT ListADT List 加工型操作加工型操作加工型操作加工型操作 ClearList(ClearList(&L)L)初始条件:线性表初始条件:线性表L L已存在。已存在。操作结果:将操作结果:将L L重置为空表。重置为空表。PutElem(L,i,PutElem(L,i,&e)e)初始条件:线性表初始条件:线性表L L已存在,已存在,1iLengthList(L)1iLengthList(L)操作结果:操作结果:L L中第中第i i个元素赋值同个元素赋值同e e的值。的值。ListInsert(
13、ListInsert(&L,i,e)L,i,e)初始条件:线性表初始条件:线性表L L已存在,已存在,1iLengthList(L)+11iLengthList(L)+1 操作结果:在操作结果:在L L的第的第i i个元素之前插入新的元素个元素之前插入新的元素e e,L L的长度增的长度增1 1。ListDelete(ListDelete(&L,i,L,i,&e)e)初始条件:线性表初始条件:线性表L L已存在且非空,已存在且非空,1iLengthList(L)1iLengthList(L)操作结果:删除操作结果:删除L L的第的第i i个元素,并用个元素,并用e e 返回其值,返回其值,L
14、L的长度减的长度减1 1。ADT ADT List List 数据结构数据结构3/25/20238 8数据结构数据结构举例举例 假设线性表假设线性表L=(23,56,89,76,18),i=3,x=56,y=88,L=(23,56,89,76,18),i=3,x=56,y=88,则对则对L L的一组操作及结果如下:的一组操作及结果如下:ListLength(L)ListLength(L)/所得结果为所得结果为5 5GetElem(L,i,&e)GetElem(L,i,&e)/所得结果为所得结果为8989PriorElem(L,PriorElem(L,x x,&pre_e),&pre_e)/所得
15、结果为所得结果为2323NextElem(L,NextElem(L,x x,&next_e),&next_e)/所得结果为所得结果为8989LocateElem(L,x,equalLocateElem(L,x,equal)/所得结果为所得结果为2 2ListInsert(&L,i,y)/ListInsert(&L,i,y)/所得结果为所得结果为(23,56,88,89,76,18)(23,56,88,89,76,18)ListDelete(&L,i+1,&e)ListDelete(&L,i+1,&e)/所得结果为所得结果为(23,56,88,76,18)89(23,56,88,76,18)89
16、数据结构数据结构3/25/20239 9数据结构数据结构 如何实现线性表的其它操作如何实现线性表的其它操作例例例例2-1 2-1 利用两个线性表利用两个线性表利用两个线性表利用两个线性表LALA和和和和LBLB分别表示两个集合分别表示两个集合分别表示两个集合分别表示两个集合A A和和和和B B,现要求一个新的集合,现要求一个新的集合,现要求一个新的集合,现要求一个新的集合A=AA=AB B。设计思想:设计思想:扩大线性表扩大线性表LALA,将存在于线性表,将存在于线性表LBLB中而不存在中而不存在于线性表于线性表LALA中的数据元素插入到线性表中的数据元素插入到线性表LALA中去。中去。分下列
17、三步进行:分下列三步进行:1 1从线性表从线性表LBLB中依次取得每个数据元素中依次取得每个数据元素;2 2依值在线性表依值在线性表LALA中进行查访中进行查访;3 3若不存在,则插入之。若不存在,则插入之。数据结构数据结构3/25/20231010数据结构数据结构A=ABA=AB算法描述:算法描述:算法描述:算法描述:/将所有在线性表将所有在线性表将所有在线性表将所有在线性表LbLbLbLb中但不在中但不在中但不在中但不在LaLaLaLa中的数据元素插入到中的数据元素插入到中的数据元素插入到中的数据元素插入到LaLaLaLa中中中中void Union(List&Lavoid Union(L
18、ist&Lavoid Union(List&Lavoid Union(List&La,List Lb)List Lb)List Lb)List Lb)/求线性表的长度求线性表的长度求线性表的长度求线性表的长度 La-len=ListLength(La);La-len=ListLength(La);La-len=ListLength(La);La-len=ListLength(La);Lb-len=ListLength(Lb);Lb-len=ListLength(Lb);Lb-len=ListLength(Lb);Lb-len=ListLength(Lb);for(i=1;i=Lb-len;i+
19、)for(i=1;i=Lb-len;i+)for(i=1;i=Lb-len;i+)for(i=1;i=Lb-len;i+)/取取取取LbLbLbLb中第中第中第中第i i i i个数据元素赋给个数据元素赋给个数据元素赋给个数据元素赋给e e e e GetElem(Lb GetElem(Lb GetElem(Lb GetElem(Lb,i i i i,e);e);e);e);/La/La/La/La中不存在和中不存在和中不存在和中不存在和 e e e e 相同的数据元素,则插入之相同的数据元素,则插入之相同的数据元素,则插入之相同的数据元素,则插入之 if(!LocateElem(La if(
20、!LocateElem(La if(!LocateElem(La if(!LocateElem(La,e e e e,equal)equal)equal)equal)ListInsert(LaListInsert(LaListInsert(LaListInsert(La,+La-en+La-en+La-en+La-en,e);e);e);e);/Union/Union/Union/Union数据结构数据结构3/25/20231111数据结构数据结构A=ABA=AB时间复杂度分析:时间复杂度分析:GetElemGetElemGetElemGetElem取遍取遍取遍取遍LbLbLbLb表元素需表元
21、素需表元素需表元素需Lb_len=ListLength(Lb)Lb_len=ListLength(Lb)Lb_len=ListLength(Lb)Lb_len=ListLength(Lb)次;次;次;次;循环体内的循环体内的循环体内的循环体内的LocateLocateLocateLocate操作平均需操作平均需操作平均需操作平均需ListLength(La)ListLength(La)ListLength(La)ListLength(La)次次次次最坏情况为:最坏情况为:最坏情况为:最坏情况为:ListLength(La)ListLength(La)ListLength(La)ListLeng
22、th(La)总的时间复杂度:总的时间复杂度:总的时间复杂度:总的时间复杂度:O ListLength(Lb)*ListLength(La)O ListLength(Lb)*ListLength(La)O ListLength(Lb)*ListLength(La)O ListLength(Lb)*ListLength(La)数据结构数据结构3/25/20231212数据结构数据结构例例 2-1-2 2-1-2已知一个非纯集合已知一个非纯集合已知一个非纯集合已知一个非纯集合 B B B B,试构造集合,试构造集合,试构造集合,试构造集合A A A A,要求集合,要求集合,要求集合,要求集合A A
23、A A中只中只中只中只包含集合包含集合包含集合包含集合B B B B中所有值不相同的数据元素。中所有值不相同的数据元素。中所有值不相同的数据元素。中所有值不相同的数据元素。设计思想:设计思想:设计思想:设计思想:解法一:解法一:同上例,分别以线性表同上例,分别以线性表LALA和和LBLB表示集合表示集合A A和和B B,则首先初,则首先初始化线性表始化线性表LALA为空表,之后的操作和例为空表,之后的操作和例2-12-1完全相同。完全相同。解法二:解法二:仍以线性表表示集合。只是求解之前先对线性表仍以线性表表示集合。只是求解之前先对线性表LBLB中的中的数据元素进行排序,即线性表数据元素进行排
24、序,即线性表LBLB中的数据元素依其值从中的数据元素依其值从小到大有序排列,则值相同的数据元素必相邻。则上述小到大有序排列,则值相同的数据元素必相邻。则上述操作中的第二步就不需要进行从头至尾的查询。操作中的第二步就不需要进行从头至尾的查询。数据结构数据结构3/25/20231313数据结构数据结构A=BA=Bvoid purge(List&La,List Lb)void purge(List&La,List Lb)/已知线性表已知线性表已知线性表已知线性表LbLb中的数据元素依值非递减有序排列,现构造线性表中的数据元素依值非递减有序排列,现构造线性表中的数据元素依值非递减有序排列,现构造线性表
25、中的数据元素依值非递减有序排列,现构造线性表LaLa,/使使使使LaLa中只包含中只包含中只包含中只包含LbLb中所有值不相同的数据元素中所有值不相同的数据元素中所有值不相同的数据元素中所有值不相同的数据元素 InitList InitList(LaLa););););/初始化初始化初始化初始化LaLa为空表为空表为空表为空表 La_len=ListLength(La);La_len=ListLength(La);Lb_len=ListLength(Lb);/Lb_len=ListLength(Lb);/求线性表的长度求线性表的长度求线性表的长度求线性表的长度 for(i=1;i=Lb_len
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 福建 教师 招考 信息技术 算法 程序 部分 1193
限制150内