chap2.2链表.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学习重点 复习结构体定义 线性表的特点 顺序存储的常用操作 链表 单链表 循环链表 双向链表 编写程序的步骤与方法套路 定义一个存储结构:顺序表---动态数组(静态数组) 定义基于上述结构的基本操作 主程序 一定有一个定义为上述存储结构的变量(初始化) 实践和调用基于此结构的操作(函数) 一定显示变化的结果 2.3—1 单链表概念 链表的定义 空表 链表的常用操作(回忆) 创建链表方法:前插入法 插入一个元素到链表 删除链表中一个元素 引入带头结点的链表 2.3.2 链表的常用操作 创建链表方法 头插法 尾插法 遍历链表 插入元素到链表 删除链表中的元素 链表操作的基本掌握 定义链表的存储结构 创建一个链表(头插入法 尾插入法) 输入链表、查找链表的指定元素 在指定位置删除、插入元素 头插入法生成的过程 创建一个结点为头结点L 开辟空间L=malloc L-next=NULL 插入元素到链表的头部( 反复执行n次) 定位到表的头head head-next 生成一个新结点p=malloc 插入该元素到原tail后面 {pdata=x; P-next=head-next; Head-next=p;} 生成的过程 创建一个结点为头结点L 开辟空间L=malloc L-next=NULL 插入元素到链表的尾部( 反复执行n次) 定位到表的尾巴tail 生成一个新结点p=malloc 插入该元素到原tail后面 {tail-next=p; p-next=NULL;p-data=x;} 逆序生成 插入an(链表L) 1)生成一个节点p 2)将P插入到l和l-next 然后an-1 a1 插入位置的查找 前提:L为头结点,s为等待插入的元素,p代表当前位置,插入s在其后面 插入在一个空表中:p-next=s;s-next=NULL 插入在一个非空表中 插入在头结点后面s-next= p-next; p-next=s; 插入在中间部位p之后s-next= p-next; p-next=s; 插入在链表的尾部( p-next==NULL) p-next=s;s-next= p-next 在第i个元素之前插入,意味在i-1后面插入 找到第i-1 (p,p-next) 生成一个新结点s 插入操作(牵手后面,再拉住前面的) 两个有序链表的合并的算法 拿两个指针指向两个链表的第一个元素 设pa—La pb—Lb Lc首先是一个空表(思想是创建Lc) { 选取插入的元素(小的元素) 插入到lc } 将剩余的元素链在pc后面(if (pc==pa) if(pa!=NULL) pc-next=pa; if(pb!=NULL) pc-next=pb; 随机生成一个有升序的链表。 逐个输入元素x 插入(头插入、尾插入) 链表的拆分 La,Lb开辟空间一个空间,存链表的头,pa,pb(指向表的尾巴)指向其尾插入法 Lc的每个元素要逐个读取 {(头插入) 挑选Lc的当前元素pc到La(尾插入的语句) 挑选Lc的当前元素pc到Lb Pc=pc-next; } 链表排序的思想 从头开始扫描原链表到尾部 将第一元素放在一张单独链表中 将原链表中所有元素逐一和头比较,小的插入在其前面 插入比较的过程中筛选出小的元素来 链表实验内容 假设带头结点的单链表是递增有序的,设计算法在其中插入一个值为x的结点,并保持其递增特性。 设计算法以删除链表中值为x的元素结点。 设计算法将两个递增有序的带头结点的单链表A、B合并为一个递增有序的带头结点的单链表,并要求算法的时间复杂度为两个表长之和的数量级。 设计算法将带头结点的双循环链表L就地逆置,即利用原表各结点的空间实现逆置。 循环链表 定义存储结构和单链表一样 带头节点的判断空表的条件:L-next=L 循环结束的条件:p-next=L 插入 删除 查找(p-next=L) 遍历 等和单链表相同 合并La,Lb连个循环链表为一个Lc循环链表。 应用场所(约瑟夫生者死者游戏 ) 控制循环链表结束的条件P(L) S表示当前节点(s=p;s=l-next) (S-next==p)表示回到起点 While(s) 现在改为While(s!=P){s=s-next;} 空表的条件L-next=NULL L-before=NULL 创建链表的方法 头插入 尾巴插入 插入的时候影响的元素L,S S的前驱和后继安排位置 改写两个中间元素的前驱和后继 双向链表操作 创建双向链表(单链表的算法添加信息:prior有所指向) 查找(方法同单链表) 插入一个元素到双向链表中 定位 删除双向链表中一个元素 双向链表中的基本运算 插入运算 最后一个结点的指针域的指针又

文档评论(0)

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

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

1亿VIP精品文档

相关文档