网站大量收购独家精品文档,联系QQ:2885784924

第2章 线性表C.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上堂课要点回顾 讨论1: 用一维向量也能实现链表结构吗? 讨论2: 链表能不能首尾相连?怎样实现? 讨论3: 单链表只能查找结点的直接后继,能不能查找直接前驱?如何实现? 第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 应用举例 2.3 线性表的链式表示和实现 2.3.3 链表的运算效率分析 1. 查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。 练: 2.4 应用举例 一元多项式的数学通式? 用抽象数据类型如何描述它的定义? 用C语言如何描述它的定义? 如何编程实现两个一元多项式相加? 1. 一元多项式的数学通式? 2. 用抽象数据类型如何定义一元多项式? AddPolyn(Pa,Pb) 初始条件:一元多项式Pa和Pb已存在。 操作结果:完成多项式相加运算,即:Pa=Pa+Pb, 并销毁一元多项式Pb。 /两表相加 3. 用C语言如何具体描述它的定义? 4. 如何编程实现两个一元多项式相加? 实现思路: 具体编程(用C语言) Void AddPolyn(polynomialPa, polynomial Pb){ 运算效率分析: (1) 系数相加 0 ? 加法次数? min(m, n) 其中 m和n分别表示表A和表B的结点数。 (2) 指数比较 极端情况是表A和表B 没有一项指数相同,比较次数最多为m+n-1 (3) 新结点的创建 极端情况是产生m + n 个新结点 合计时间复杂度为 O(m+n) 本章小结(讨论题形式) 线性表逻辑结构特点是,只有一个首结点和尾结点;除首尾结点外其他结点只有一个直接前驱和一个直接后继。简言之,线性结构反映结点间的逻辑关系是一对一(1:1)的。 问2:顺序存储和链式存储各有哪些优缺点? 顺序存储的优点是存储密度大(=1),存储空间利用率高。缺点是插入或删除元素时不方便。 链式存储的优点是插入或删除元素时很方便,使用灵活。缺点是存储密度小(1),存储空间利用率低。 问3:在什么情况下用顺序表比链表好? * * 栅斟厌类恳姬浪殴功酸枝苞嫌恢齐吝县临挖巫婶鲜筛铡触蓟式蒸褒战匡簇第2章 线性表C第2章 线性表C 链表的表示(包括有关术语、结构数据类型等) 链表的实现(建表、输出、修改、插入、删除) 补充:其它链表形式 静态链表 循环链表 双向链表 同学提问: ① test *p,*q是否应改为liu *p,*q? ② 怎样读取头结点数据域中的信息? ③ 链表的操作要用指针,蛮“裹人”! 是 用L-data 仅两个作用:找位置和改地址! 到漂惕热规鄙吨珐窿妒叠互傲壁韭基勿结梆顾讫畜凯何裴绥借挟靶的烃搀第2章 线性表C第2章 线性表C 答:能。只要定义一个结构类型数组(含数据域和指示域),就可以完全描述链表,这种链表称为静态链表。 注:数据域含义与前面相同,指示域相当于前面的指针域。 静态链表的插入与删除操作与普通链表一样,不需要移动元素,只需修改指示器就可以了 具体实现过程见教材P31-34。 谆阜致喇虎池啤茨袱侍浦稍鸵秧舜浮藩蓉铃氏携姻悔咎捧须帐既舌氖炮篓第2章 线性表C第2章 线性表C 答:能。只要将表中最后一个结点的指针域指向头结点即可 (P-next=head;) 。这种形成环路的链表称为循环链表。 参见教材P35。 特别:带头结点的空循环链表样式 H 特点: 1、从任一结点出发均可找到表中其他结点。 2、操作时仅循环条件与单链表不同: 单链表 用 p = NULL 或 p -next =NULL 循环链表用 p= head 或 p-next = head 烫裹杨勘岩肯撤杭喂级司标猜愿哥泪酵固贺赣俭水圣蓟幂甚迷徘撂酝援吱第2章 线性表C第2章 线性表C 答:能。只要把单链表再多开一个指针域即可(例如用*next和*prior) 。 双链表在非线性结构(如树结构)中将大量使用。 prior data next 这种有两个指针的链表称为双向链表。其特点是可以双向查找表中结点。参见教材P35—39。 特别:带头结点的空双向链表样式: 粹囤诅北标皂审础臂巫葱鸽诊彪舒劝再秉逾烩人裔蠕险仅澜磕仲寐石胃慕第2章 线性表C第2章 线性表C 砍浊冉雨欺恋嘲黎桐眼鸦排降熏胰零幻龙唬导妈旺爹玉秉修末谦少撑妈债第2章 线性表C第2章 线性表C 2.3.1 链表的表示 2.3.2 链表的实现 2.3.3 链表的运算效率分析 漏示瓜迟武耶镀属吃册试取辈市舔椭狰两满亥迁鬃舆舟迅话漳个罗亥沿郁第2章 线

文档评论(0)

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

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

1亿VIP精品文档

相关文档