数据结构 C语言版 严蔚敏 李冬梅 吴伟民 第2章 线性表新.pptVIP

  • 34
  • 0
  • 约2.54万字
  • 约 138页
  • 2018-01-01 发布于广东
  • 举报

数据结构 C语言版 严蔚敏 李冬梅 吴伟民 第2章 线性表新.ppt

* 北京林业大学信息学院 思考1:要求合并后的表无重复数据,如何实现? 提示:要单独考虑 pa-data = =pb-data La(Lc) 1 2 4 6 7 8 8 10 11 * 北京林业大学信息学院 要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。 表中允许有重复的数据。 思考2:将两个非递减的有序链表合并为一个非递增的有序链表,如何实现? * 北京林业大学信息学院 (1)Lc指向La (2) 依次从 La 或 Lb 中“摘取”元素值较小的结点插入到 Lc 表的表头结点之后,直至其中一个表变空为止 (3) 继续将 La 或 Lb 其中一个表的剩余结点插入在 Lc 表的表头结点之后 (4) 释放 Lb 表的表头结点 【算法思想】 * 北京林业大学信息学院 2.4.3  一元多项式的表示及相加 A17(x)?=?7?+?3x?+?9x8?+?5x17 B8(x)?=?8x?+?22x7???9x8 自学 * 北京林业大学信息学院 1、掌握线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构(顺序表)和链式存储结构(链表)。 2、熟练掌握这两类存储结构的描述方法,掌握链表中的头结点、头指针和首元结点的区别及循环链表、双向链表的特点等。 小结 * 北京林业大学信息学院 3、熟练掌握顺序表的查找、插入和删除算法 4、熟练掌握链表的查找、插入和删除算法 5、能够从时间和空间复杂度的角度比较两种存储结构的不同特点及其适用场合 小结 * 北京林业大学信息学院 (1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。 算法设计题 * 北京林业大学信息学院 参考算法2.16 要单独考虑 pa-data = =pb-data La(Lc) 1 2 4 6 7 8 8 10 11 * 北京林业大学信息学院 (2)将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复的数据。 算法设计题 * 北京林业大学信息学院 (1)Lc指向La (2) 依次从 La 或 Lb 中“摘取”元素值较小的结点插入到 Lc 表的表头结点之后,直至其中一个表变空为止 (3) 继续将 La 或 Lb 其中一个表的剩余结点插入在 Lc 表的表头结点之后 (4) 释放 Lb 表的表头结点 【算法思想】 * 北京林业大学信息学院 12 23 34 45 56 11 32 43 48 54 La Lb Lc ∧ pa pb q pb ∧ q pa q pa q 第(2)题实现过程动态演示 * 北京林业大学信息学院 (6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。 【算法思想】类似于求n个数中的最大数 可假设第一个结点最大,用指针pmax指向。 然后用pmax依次和后面的结点进行比较,发现大者则用pmax指向该结点。 这样将链表从头到尾遍历一遍时,pmax所指向的结点就是最大者。 其中的比较语句形式如下: if(p-data pmax-data) pmax=p; 算法设计题 * 北京林业大学信息学院 (7)设计一个算法,通过一趟遍历,将链表中所有结点的链接方向逆转,且仍利用原表的存储空间。  算法设计题 【算法思想】从首元结点开始,逐个地把链表L的当前结点p插入新的链表头部 * 北京林业大学信息学院 a1 a2 a3 ? L L p ? a1 ? p q a2 p q a3 p 标志后继结点q 修改指针(将p插入在头结点之后) 重置结点p(p重新指向原表中后继) q 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 *

文档评论(0)

1亿VIP精品文档

相关文档