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

石河子大学信息科学与技术学院数据结构课件第二章 线性表.ppt

石河子大学信息科学与技术学院数据结构课件第二章 线性表.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.3.1 线性链表 2.3.2 循环链表 2.3.3 双向链表 2.4 一元多项式的表示及相加 例2:学生健康情况登记表如下: 单链表示意图 假设p为指向结点的指针变量,则它通过标准函数生成的,即 p=(LNode*)malloc(sizeof(LNode)); 函数malloc分配了一个类型为LNode的结点变量的空间,并将其首地址放入指针变量p中。一旦p所指的结点不再需要了,又可通过标准函数 free(p)释放所指的结点空间。 注意:三个概念: 头结点的概念 头指针 首元结点 单链表的基本操作: 一、查找运算 1、在单链表中,即使知道被访问结点的序号i,也不能象顺序表中那样直接按序号i访问结点,而只能从单链表的头指针出发,顺链域next逐个结点往下搜索,直到搜索到第i个结点为止。 因此,链表不是随机存取结构。 设单链表的长度为n,要查找表中第i个结点,仅当1=i=n时,i的值是合法的。 其算法参见P29 算法的平均时间复杂度: a b 步骤1 :生成一个数据域为x的结点。 p x s data next 在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。 二、单链表的插入 用C语句描述为: s = (LNode *)malloc(sizeof(LNode)); s-data = x; a b 步骤2 :将数据元素x插在a和b元素之间。 p x s data next a b p x s data next 步骤2 :将数据元素x插在a和b元素之间。 a b 步骤2 :将数据元素x插在a和b元素之间。 p x s data next s a b 用C语言描述为: s-next = p-next; p-next = s; p x s data next a b p x s data next 即: p-next = s; s-next = p-next; s 注意语句的顺序,如改为以下顺序,什么情况会发生? b结点的地址? 在带头结点单链表L中第i个位置之前插入元素e: … ai-1 ai … p j = 0 a1 an ^ L 在带头结点单链表L中第i个位置之前插入元素e: … ai-1 ai … j = 1 a1 an ^ p L 在带头结点单链表L中第i个位置之前插入元素e: p j = … … ai-1 ai … a1 an ^ L 在带头结点单链表L中第i个位置之前插入元素e: j = i-1 … ai-1 ai … a1 an ^ p L … ai-1 ai … a1 an ^ p e s L 关键语句: s=(LNode *)malloc(sizeof(LNode)); s-data = e; s-next = p-next; p-next = s; 其算法参见P29 删除元素b: a b p c data next … … b 三、单链表的删除 a b p c data next … … b 删除元素b: 三、单链表的删除 a b p c data next … … b 用C语言语句描述为: p-next=p-next-next; 删除元素b: 三、单链表的删除 删除元素b并释放之: a b p c data next … … b 步骤1:将b的地址记录下来 即:q=p-next; q a b p c data next … … b 删除元素b并释放之: 步骤2:让p-next指向b后第一个结点 即:p-next=q-next; q a b p c data next … … b 删除元素b并释放之: q 步骤3:释放b结点 即:free(q) a p c data next … … 删除元素b并释放之: b q 步骤3:释放b结点 即:free(q) 其算法参见P30 四、单链表的建立(头插法) 动态建立单链表算法:设线性表n个元素已存放在数组a中,建立一个单链表,L为头指针。 L 头结点 an ^ L 头结点 ^ L 头结点 an-1 an ^ a2 …... L 头结点 an-1 an ^ L a1 a2 头结点 an ^ …... …… 其算法参见P30 小结 3、链式存储的优点:插入删除效率高 4、链式存储的缺点:访问某个

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档