- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chapter线性表循环链表双向链表()
Enter n and m: 8 3 Delete person: 3 Delete person: 6 Delete person: 1 Delete person: 5 Delete person: 2 Delete person: 8 Delete person: 4 the result is: 7 运行结果 如果每次m的值都不一样(假设每个人都有一个密码,每次m的值取这一密码),怎么解决? 为节点增加一个数据域,即在节点类中增加一个成员key; 用一个结构体表示一个节点的数据域。 data key link 【思考】 4、双向链表 如果希望能快速找到一个结点的直接前驱,可以在单链表中的结点中增加一个指针域指向它的直接前驱,这样的链表,就称为双向链表(一个结点中含有两个指针)。 在单链表中,从某个结点出发可以直接找到它的直接后继,时间复杂度为O(1) ,但无法直接找到它的直接前驱; 在循环单链表中,从某个结点出发可以直接找到它的直接后继,时间复杂仍为O(1),直接找到它的直接前驱,时间复杂为O(n); left (左链指针) data (数据) right (右链指针) 双向链表是指在前驱和后继方向都能遍历的线性链表。 双向链表中每个结点的结构 前驱方向 后继方向 双向链表通常采用带表头结点的循环链表形式。 a0 … an-1 first 带表头结点的双向循环链表 a b c d e NULL firstNode NULL lastNode 在双向链表中可以方便地访问节点的前驱。 两个指针域:left,right 双向循环链表 a b c d e firstNode 带头节点的双向循环链表 a b c e headerNode d first 带头节点的双向循环空链表 first first-left=first; first-right=first; A B C p-left:A p-right:C p p-left-right:B p-right-left:B p==p-left-right==p-right-left p既被它的前驱结点的右指针所指,又被它的后继结点的左指针所指。 双向链表的重要特征 思考:双向链表的插入、删除操作 A B C × × × × A value s C × × ① ③ ② ④ p p ② ④ ①s-left=p-left; ②s-left-right=s; ③s-right=p; ④p-left=s; 在p之前插入一个节点 删除p所指示的节点 ①p-left-right=p-right; ②p-right-left=p-left; ① ② 5、提示1:注意指针变量的有效性 记得使用new 使用新指针变量,或要生成一个新节点前先执行new操作 不要引用NULL指针 使用指针前,先用if语句(或while循环条件中的语句)判断它非空 不能引用Delete了的指针 提示2:注意链表的边界处理 几个特殊点的处理 头指针处理 非循环链表尾节点的指针域保持为NULL 循环链表尾节点的指针回指头节点 链表处理 空链表的特殊处理 插入或删除节点时指针勾链的顺序 指针移动的正确性 插入 查找或遍历 6、链表 vs. 数组 描述方法 操作 查找 第k个元素 删除 第k个元素 在第k个元素后插入 公式化描述(顺序表) (1) (n-k)s (n-k)s 链表描述(链表) (k) k (k+s) 链表 vs. 数组:线性表实现方法比较 顺序表的主要优点 没有使用指针,不用花费附加开销 链表需要额外空间来存放指针; 线性表元素的访问非常简洁便利 采用公式化描述,可在常数时间内访问第k 个元素;而在链表中,需要的时间为O ( k )。 链表的主要优点 无需事先了解线性表的长度 允许线性表的长度有很大变化 能够适应经常插入删除内部元素的情况 链表中的插入和删除操作不需要移动数据,所以更快 链表 vs. 数组:应用场合的选择 不要使用顺序表的场合 经常插入删除时,不宜使用顺序表; 线性表的最大长度也是一个重要因素。 不要使用链表的场合 当存取操作比插入删除操作频率大时,不应选择链表; 当指针的存储开销和整个节点内容所占空间相比其比例较大时,应该慎重选择。 1、 2000年华中科技大学考研题: 【填空题】设单链表的节点结构为(data,next),next为指针域。已知指针px指向单链表中data为x的节点,指针py指向data为y的节点,若将y插入节点x之后,则需执行以下语句: px-next=py; 课堂练习 2、2000武汉大学考研题: 【选择题】非空循环链表head
您可能关注的文档
最近下载
- 本田裂行维修手册全一本_本田SDH125T-31摩托车维修手册.pdf VIP
- 新22G04 钢筋混凝土过梁.docx VIP
- 【培训PPT】水肥一体化技术及应用.pptx
- 附录一、卫生部颁《医院信息系统基本功能规范》(草案).pdf VIP
- (完整版)仁爱英语八年级上册第二单元测试.doc VIP
- 2025年部编人教版(统编版新教材)八年级初二上册道德与法治教学计划及进度表.docx
- 植物基因技术(中国药科大学生物工程所有课件).ppt VIP
- 电子商务基础(第2版)全套PPT课件.pptx
- 《感染性休克》ppt课件.pptx VIP
- 2019版南方区域AGC发电单元调频指标计算规范.docx VIP
文档评论(0)