第3章线性表-1.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章线性表-1

例 3-1 线性表归并的算法 已知线性表La和Lb中的数据元素按值非递减有序排列,要求将La和Lb归并为一个新线性表Lc=La∪Lb,且Lc中的数据元素仍按值非递减有序排列。 例如:La=(1,5,7,15) Lb=(3,6,8,9,13,15,17) 则 Lc=(1,3,5,6,7,8,9,13,15,15,17) 线性表Lc中的数据元素是La和Lb中的数据元素的并集,其值按值非递减有序排列。 a 当a=b C= b 当 ab 我们设置三个指针: i 指向La的当前元素; j 指向Lb的当前元素; k 指向Lc的当前元素; 算法3-1 线性表的归并算法 Void Mergrlist (List *La,List *Lb,List *Lc) { InitList(Lc); i=j=1;k=0; La_len=ListLength(La); Lb_len=ListLength(Lb); while ((i=La_len)(j=Lb_len)) ai=GetElem(La.i); bi=GetElem(Lb.j); if (aibj) {++k;ListInsert(Lc,ai;++i} else {++k;ListInsert(Lc,bj;++j} while(i=La_len) { GetElem(La,ai);++i;++k; ListInsert(Lc,ai);} while(i=Lb_len) { GetElem(Lb,bj);++j;++k; ListInsert(Lc,bj);} } 上述算法的时间复杂度与两个线性表的长度有关,为: T(n)=O(Listlength(La)+Listlength(Lb)) 例 3-2 删除线性表中的算法 已知线性表La的数据元素有重复的,要求删除其中多余的重复元素,生成一个新表。 例如:La=(2,3,4,3,5,6,7,8,9) Lb=(2,3,4,5,6,7,8,9) 算法3-2 删除线性表中的重复数据算法 Void PURGE(List *La) { InitList(Lc); int k,x,y; int i=1; int L=ListLength(La); while (iL) { x=GetElem(La.i); k++; while(kL) { GetElem(La,k); if(x==y) { Delete(La,k); L--; k++; } else k++; } } 第*页 第3章 线性表 第3章 线性表 3.1 线性表及其逻辑结构 3.2 线性表的顺序存储 3.3 线性表的链式存储 3.4 链式存储结构的应用 3.5 本章小结 3.1 线性表及逻辑结构 线性表(Linear List) 是最简单、最常用的一种数据结构。通常,一个线性表是n(n≥0)个性质相同的数据元素组成的有限序列。线性表的长度即为线性表中数据元素的个数n,当n=0时,称该线性表为空表。 在一个非空表(a1,a2,…ai,…,an-1,an)中,每一个元素都有一个确定的位置,如a1是第一个数据元素,an是最后一个元素,ai是第i个元素,称i为数据元素ai在线性表中的位序。 线性表存在着线性的逻辑关系: 表中有且仅有一个开始结点;有且仅有一个终端结点;除开始结点外,表中的每个结点均只有一个前趋结点;除终端结点外,表中的每个结点均只有一个后继结点。根据它们之间的关系可以排成一个线性序列,记作: (a1,a2,…,an) 这里的ai(1≤i≤n)属于同一数据对象,具有相同的数据类型。 对于ai, 当1i≤n时,它有一个直接前驱ai-1; 当1≤in时,它有一个直接后继ai+1。 例如,英文字母表: (A,B,C,D,…,X,Y,Z); 再如一周中的七天: (星期日,星期一, 星期二, 星期三,星期四,星期五, 星期六)。 这两例都是线性表。 在复杂的线性表中,一个元素可以由若干个数据项构成,称该元素为记录。 对线性表需要经常进行的基本操作主要

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档