【给学生】参考chap2线性表.pptVIP

  1. 1、本文档共116页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上机题目1 设计构造两个顺序映像线性表,分别用来表示一个班级学生的学号和体育成绩。成绩以递增的方式存储于线性表1中,学号则根据相应的成绩按顺序存储于线性表2中。因班里有学生转换专业离开或加入,程序能够对该表进行插入和删除的操作,插入或删除操作后的线性表仍然为有序表。 学生总数N不超过20人。 要求: 首先输入原始班级学生的总数N,然后按成绩增序手工输入学号和成绩,程序自动生成两个线性表; 程序提示是否有插入?(Y/N),如果是Y,输入新同学的学号和成绩,回车结束;否则进入下一步; 程序提示是否有删除?(Y/N),如果是Y,输入被删除同学的学号,回车结束,程序在两个线性表中删除该同学的学号和记录;否则进入下一步; 最后显示操作后班级学生的学号和成绩,按成绩的增序排列。 上机题目2: 设计构造两个链式线性表,用来表示两个一元多项式 程序允许用户手工输入这两个线性表,每个线性表中的每个数据元素包含两个值,系数Pi和幂qi;输入方式自定; 程序对两个多项式进行相加,然后输出一个相加后的一元多项式。 双向链表的操作特点: “查询” 和单链表相同。 “插入” 和“删除”时需要同时修改两个方向上的指针。 ai-1 ai e s-next = p-next; p-next = s; s-next-prior = s; s-prior = p; p s ai-1 ai 插入 ai-1 删除 ai ai+1 p-next = p-next-next; p-next-prior = p; p ai-1 六、有序表类型 ADT Ordered_List { 数据对象: S = { xi|xi ? OrderedSet , i=1,2,…,n, n≥0 } 集合中 任意两个 元素之间 均可以 进行比较 数据关系:R = {xi-1, xi | xi-1, xi ? S, xi-1≤ xi, i=2,3,…,n } 回顾例2-2的两个算法 LocateElem( L, e, q, int(*compare)(ElemType,ElemType) ) 初始条件:有序表L已存在。 操作结果:若有序表L中存在元素e,则 q指示L中第一个值为 e 的元素的位置,并返回函数值TRUE;否则 q 指示第一个大于 e 的元素的前驱的位置,并返回函数值FALSE。 基本操作: … … … … Compare是一个有序判定函数 ( 12, 23, 34, 45, 56, 67, 78, 89, 98, 45 ) 例如: 若 e = 45, 则 q 指向 若 e = 88, 则 q 指向 表示值为 88 的元素应插入在该指针所指结点之后。 void union(List La, List Lb) {// Lb 为线性表 InitList(La); // 构造(空的)线性表LA La_len=ListLength(La); Lb_len=ListLength(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 算法时间复杂度:O(n2) void purge(List La, List Lb) { // Lb为有序表 InitList(LA); La_len = ListLength(La); Lb_len =ListLength(Lb); // 求线性表的长度 for (i = 1; i = Lb_len; i++) { } } // purge GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给 e if (ListEmpty(La) || !equal (en, e)) { ListInsert(La, ++La_len, e); en = e; } // La中不存在和 e 相同的数据元素,则插入之 算法时间复杂度:O(n

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档