《数据结构》中B―树的删除算法的实现.docVIP

《数据结构》中B―树的删除算法的实现.doc

  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文档。上传文档
查看更多
《数据结构》中B―树的删除算法的实现.doc

《数据结构》中B―树的删除算法的实现   摘要:B-树是一种平衡的多路查找树,在文件系统中有着很好的应用。该文分析了在B-树中删除一个关键词的几种情形,给出了B-树删除算法的具体实现,有助于对《数据结构》课程中B-树操作的更好理解。   关键词:查找树;子树;叶子结点;删除算法;合并结点   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3778-04   Abstract:B-trees are balanced search trees designed to work well on file systems. In this paper, the detailed implementation of a deleting algorithm is discussed for a few situations of deleting the key in B-trees, which contributes to a better understanding of B-trees in a data structure course.   Key words:Search tree; Subtree; Leaf node; Deleting algorithm; Merge node   1 概述   B-树是《数据结构》课程中动态查找表的重要内容[1],其中在B-树上删除一个关键词是教学过程中的一个难点。大多数的《数据结构》教材中只给出了删除关键词的情况分析,并辅以简单的示例,都没有给出对应的B-树删除算法。对于一些稍复杂的关键词删除问题,我们往往不能得到准确删除后的B-树。该文在给出B-树的定义后,对在B-树中删除一个关键词的几种情形进行分析,并给出B-树删除算法的具体程序实现,有助于大家更好地理解《数据结构》课程中B-树的删除过程。   2 B-树的定义及其查找过程   2.1 B-树的定义   B-树是由R. Bayer和E.M. McCreight于1972年提出的一种平衡的多路查找树[2],它比较适合在磁盘等直接存取设备上组织动态的查找表,它是一种组织和维护外存文件系统非常有效的数据结构。   B-树中所有结点的最大子树个数称为该B-树的阶,通常用m表示,从查找效率考虑,一般要求m≥3。一棵m阶B-树或者是一棵空树,或者是满足下列特性的m叉树[3]:   1)树中每个结点至多有m棵子树(即至多有m-1个关键词);   2)若根结点不是叶子结点,则其至少有两棵子树;   3)除根结点之外的其它结点至少有[m2]棵子树(至少有[m2-1]个关键词);   4)每个结点的结构为:(n, A0, K1, A1, K2, A2, … , Kn, An)其中,n为该结点中关键词的个数,除根结点外,其它所有结点的n满足[m2-1≤n≤m-1];Ki(1≤i≤n)为该结点的关键词且满足KiKi+1;Ai(0≤i≤n)为指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键词均小于Ki(1≤i≤n),An所指子树中所有结点的关键词均大于Kn。   5)所有的叶子结点都出现在同一层上,即B-树是所有结点的平衡因子均等于0的多路查找树。   下面图1所示为一棵3阶的B-树。   2.2 B-树的存储及查找   假设B-树的结点类型定义如下:   #define m 3 // B-树的阶,暂设为3   typedef int KeyType; // KeyType为关键词的类型   typedef struct BTNode {   int keynum; // 结点中关键词个数,即结点的大小   struct BTNode *parent; // 指向双亲结点   KeyType key[m+1]; // key[1..keynum]存放关键词,key[0]未用   struct BTNode *ptr[m+1]; // 子树指针数组ptr[0..keynum]   }BTNode,*BTree; // B-树结点和B-树的类型   typedef struct {   BTNode *pt; // 指向找到的结点   int i; // 1..m,在结点中的关键词序号   int tag; // 查找成功时为1,否则为0   }Result; // B-树的查找结果类型   由B-树的定义可知,在B-树上进行查找的过程和二叉排序树的查找类似,它是一个顺着指针查找结点和在结点的关键词中进行查找不断交叉进行的过程。若在一棵B-树上查找指定的关键词x,则先将x与根1)结点中的key[i]进行比较:   2)若x=k

文档评论(0)

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

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

1亿VIP精品文档

相关文档