算法321输出循环单链表中各个结点的值.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法321输出循环单链表中各个结点的值

第7章 二叉树 8.1 图的基本概念 8.3图的基本存储结构 8.3.2邻接表及其实现 8.3.3邻接多重表 8.4 图的遍历 8.4.2广度优先遍历 8.5生成树与最小生成树 8.5.1最小生成树的定义 8.5.2最小生成树的普里姆算法 8.5.3最小生成树的克鲁斯卡尔算法 8.6最短路径 8.6.1单源最短路径 8.6.2所有顶点对的最短路径 8.7 拓扑排序 8.8 关键路径 第9章 检索 9.1 检索的基本概念 9.2 线性表的检索 9.2.2二分法检索 9.2.3分块检索 9.3 二叉排序树 9.4丰满树和平衡树 9.4.1丰满树 9.4.2平衡二叉排序树 9.5最佳二叉排序树和Huffman树 9.5.1扩充二叉树 9.5.2最佳二叉排序树 9.5.3 Huffman树 9.6 B-树 9.6.2 B-树的基本操作 9.7散列表检索 9.7.2散列函数的构造 9.7.3冲突处理 12.2可利用空间表及分配方法 12.3.1 可利用空间表的结构 12.3.2分配算法 12.3.3回收算法 12.4无用单元的收集 12.5存储压缩 (2)假若待删结点ki是最下层的非终端结点以上某层的结点,根据B-树的特性可知,可以用ki右边指针pi所指子树中最小关键字y代替ki,然后在相应的结点中删除y,或用ki左边指针pi-1所指子树中最大关键字x代替ki,然后在相应的结点中删除x。例如删除图9.20(a)所示3阶B-树中的关键字50,可以用它右边指针所指子树中最小关键字60代替50,尔后转化为删除叶子上面一层的结点中的60,删除后得到的B-树如图9.20(b)所示。 90 115 8 40 28 150 200 85 120 50 60 80 90 115 8 40 28 150 200 85 120 60 80 3阶B-树中删除50以60代替50 因此,下面主要讨论删除B-树叶子上面一层结点中的关键字的方法,具体分三种情形: 1)被删关键字所在叶子上面一层结点中的关键字数目不小于?m/2?,则只需要从该结点中删去关键字ki和相应的指针pi,树的其它部分不变。 例: 90 8 40 28 150 200 85 120 50 80 90 115 8 40 28 150 200 85 120 50 60 80 删除60与115 2)被删关键字所在叶子上面一层结点中的关键字数目等于?m/2?-1,而与该结点相邻的右兄弟结点(或左兄弟结点)中的关键字数目大于?m/2?-1,则需要将其右兄弟的最小关键字(或其左兄弟的最大关键字)移至双亲结点中,而将双亲结点中小于(或大于)该上移关键字的关键字下移至被删关键字所在的结点中。例如从图9.21(b)中删除关键字90,结果如图9.21(c)所示。 120 8 40 28 200 85 150 50 80 90 8 40 28 150 200 85 120 50 80 删除90 3)被删关键字所在叶子上面一层结点中的关键字数和其相邻的兄弟结点中的关键字数目均等于?m/2?-1,则第(2)种情况中采用的移动方法将不奏效,此时须将被删关键字所有结点与其左或右兄弟合并。不妨设该结点有右兄弟,但其右兄弟地址由双亲结点指针pi所指,则在删除关键字之后,它所在结点中剩余的关键字和指针加上双亲结点中的关键字ki一起合并到pi所指兄弟结点中(若没有右兄弟,则合并至左兄弟结点中)。 例如,从图9.21(c)中删去关键字120,则应删去120所在结点,并将双亲结点中的150与200合并成一个结点,删除后的树如图9.21(d)所示。如果这一操作使双亲结点中的关键字数目小于?m/2?-1,则依同样方法进行调整,最坏的情况下,合并操作会向上传播至根,当根中只有一个关键字时,合并操作将会使根结点及其两个孩子合并成一个新的根,从而使整棵树的高度减少一层。 120 8 40 28 200 85 150 50 80 删除120 8 40 28 150 200 85 50 80 例如,在图9.21(d)中删除关键字8,此关键字所在结点无左兄弟,只检查其右兄弟,然而右兄弟关键字数目等于?m/2?-1,此时应检查其双亲结点关键字数目是否大于等于?m/2?-1,但此处其双亲结点的关键字数目等于?m/2?-1,从而进一步检查双亲结点兄弟结点关键字数目是否均等于?m/2?-1,这里关键字28所在的结点的右兄弟结点关键字数目正好等于?m/2?-1,因此将28和40结合成一个结点,50和85结合成一个结点,使得树变矮,删除结点8后的结果如图9.21(e)所示。 8 40 28 150 200 85 50 80 删除8 28 40 150

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档