ch2-1 线性表.ppt

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

* * * * Visit是对结点操作的应用函数,只是个伪代码,随你自己操作而定义。比如你定义个void visit(NODE *node){printf(%d, node-data) ;} 输出结点的值 * 以手机联系人为例 * ListInsert( L, i, e ) ListDelete( L, i, e ) 初始条件:线性表 L 已存在, 1≤i≤LengthList(L)+1。 操作结果:在 L 的第 i 个元素之前插入新的元素e, L 的长度增 1。 初始条件:线性表 L 已存在, 1≤i≤LengthList(L)。 操作结果:删除L 中第 i 个元素,并以e 带回其值, L的长度减 1。 2.1 线性表的类型定义 线性表的类型定义(详见课本P19) 进一步说明: ⑴ 线性表的基本操作根据实际应用而定; ⑵ 复杂的操作可以通过基本操作的组合来实现; ⑶ 对不同的应用,操作的接口可能不同。 2.1 线性表的类型定义 2.1 线性表的类型定义 例 2-1 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即:线性表中的数据元素即为集合中的成员。 现要求一个新的集合A=A∪B。 需对线性表作如下操作: 扩大线性表 LA,将存在于线性表LB 中而不存在于线性表 LA 中的数据元素插入到线性表 LA 中去。 1.取得线性表 LB 中一个数据元素; 2.依值在线性表 LA 中进行查访; 3.若不存在,则插入之。 GetElem(Lb, i, e); LocateElem(LA, e, equal( )); ListInsert(LA, n+1, e); ( n 表示线性表 LA 当前长度) 操作步骤: 2.1 线性表的类型定义 算法 2-1 void union(List La, List Lb) { La_len = ListLength(La); // 求线性表La的长度 Lb_len = ListLength(Lb); // 求线性表Lb的长度 for(i=1;i=Lb_len; i++) { GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if (!LocateElem ( La, e, equal( )) ) ListInsert(La, ++La_len, e); // La中不存在和 e 相同的数据元素,则插入之 } }//union 2.1 线性表的类型定义 例 2-2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排序。 具体操作步骤为: 1. 从线性表LA中取出第一个数据元素; 2. 从线性表LB中取出第一个数据元素; 3. 将两个元素进行比较; 4. 将较小的元素插入到LC中; 5. 小元素所在线性表指针下移,再取出一个元素,和刚才较大的比较。 重复第4-5步直至LA和LB的指针均指向最尾端止。   算法2.2(P.21) void MergeList(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) { GetElem(La,i,ai); GetElem(Lb,j,bj); if (ai=bj) { ListInsert(Lc, ++k, ai); ++i; } while (i=La_len) { GetElem(La,i++,ai); ListInsert(Lc,++k,ai); }//while while (j=Lb_len) { GetElem(Lb,j++,bj); ListInsert(Lc,++k,bj); } //while }//MergeList else { ListInsert(Lc,++k, bj); ++j; }//if }//while 2.2 线性表的顺序表示和实现 线性表的顺序表示 顺序表的实

文档评论(0)

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

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

1亿VIP精品文档

相关文档