《数据结构》教学课件 第2章线性表 (1).ppt

《数据结构》教学课件 第2章线性表 (1).ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
} while(I=la_len) {GetElem(la,I++,ai);ListInsert(lc,k++,ai);} while(j=lb_len) {GetElem(lb,j++,bj);ListInsert(lc,k++,bj);} } 空间复杂度不同 讨论1: 链表能不能首尾相连?怎样实现? 答:能。只要将表中最后一个结点的指针域指向头结点即可 (p-next=head;) 。这种形成环路的链表称为循环链表。 特别:带头结点的空循环链表样式 H 参见教材P35 特点: 1、从任一结点出发均可找到表中其他结点。 2、操作仅有 一 点与单链表不同:循环条件 单链表 ----- p = NULL 或 p -next =NULL 循环链表----- p= head 或 p-next = head 6. 其它链表形式 讨论2: 单链表只能查找结点的直接后继,能不能查找直接前驱?如何实现? 答:能。只要把单链表再多开一个指针域即可(例如用*next和*prior;) 。 双向链表在非线性结构(如树结构)中将大量使用。 prior data next 这种有两个指针的链表称为双向链表。其特点是可以双向查找表中结点。参见教材P35—39。 特别:带头结点的空双向链表样式: 双向链表定义 typedef struct DuLNode { ElemType data; // 数据域 struct DuLNode *prior; // 指向前驱的指针域 struct DuLNode *next; // 指向后继的指针域 } DuLNode, *DuLinkList; 双向链表的操作特点: “查询” 和单链表相同。 “插入” 和“删除”时需要同时修改两个方向上的指针。 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 2.3.3 链表的运算效率分析 1. 查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。 时间效率分析 2. 插入和删除 因线性链表不需要移动元素,只要修改指针,一般情况下时间复杂度为 O(1)。 空间效率分析 链表中每个结点都要增加一个指针空间,相当于总共增加了n 个整型变量,空间复杂度为 O(n)。 本章小结(讨论题形式) 线性表逻辑结构特点是,只有一个首结点和尾结点;除首尾结点外其他结点只有一个直接前驱和一个直接后继。简言之,线性结构反映结点间的逻辑关系是一对一(1:1)的。 问1:线性表的逻辑结构特点是什么?其顺序存储结构和链式存储结构的特点是什么? 答: 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。 链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。 顺序存储的优点是存储密度大(=1),存储空间利用率高。缺点是插入或删除元素时不方便。 链式存储的优点是插入或删除元素时很方便,使用灵活。缺点是存储密度小(1),存储空间利用率低。 答: 问2:顺序存储和链式存储各有哪些优缺点? 事实上,链表插入、删除运算的快捷是以空间代价来换取时间。 问3:在什么情况下用顺序表比链表好? 顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。 若线性表的长度变化不大,且其主要操作是查找,则采用顺序表; 若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。 答: 二、判断正误 ( )1. 链表的每个结点中都恰好包含一个指针。 ( )2. 链表的物理存储结构具有同链表一样的顺序。 ( )3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。 ( )4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 ( )5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 ( )6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率

文档评论(0)

188****7976 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档