资源简介
数据结构B树的完整实现,自己写的,看完后一定有所启发。
代码片段和文件信息
#include“BTREE.h“
#include
#include
#include
Status InitBTree(BTree &t){
//初始化B树
t=NULL;
return OK;
}
int SearchBTNode(BTNode *pKeyType k){
//在结点p中查找关键字k的插入位置i
int i=0;
for(i=0;ikeynum&&p->key[i+1]<=k;i++);
return i;
}
Result SearchBTree(BTree tKeyType k){
/*在树t上查找关键字k返回结果(ptitag)。若查找成功则特征值
tag=1关键字k是指针pt所指结点中第i个关键字;否则特征值tag=0
关键字k的插入位置为pt结点的第i个*/
BTNode *p=t*q=NULL; //初始化结点p和结点qp指向待查结点q指向p的双亲
int found_tag=0; //设定查找成功与否标志
int i=0;
Result r; //设定返回的查找结果
while(p!=NULL&&found_tag==0){
i=SearchBTNode(pk); //在结点p中查找关键字k使得p->key[i]<=kkey[i+1]
if(i>0&&p->key[i]==k) //找到待查关键字
found_tag=1; //查找成功
else{ //查找失败
q=p;
p=p->ptr[i];
}
}
if(found_tag==1){ //查找成功
r.pt=p;
r.i=i;
r.tag=1;
}
else{ //查找失败
r.pt=q;
r.i=i;
r.tag=0;
}
return r; //返回关键字k的位置(或插入位置)
}
void InsertBTNode(BTNode *&pint iKeyType kBTNode *q){
//将关键字k和结点q分别插入到p->key[i+1]和p->ptr[i+1]中
int j;
for(j=p->keynum;j>i;j--){ //整体后移空出一个位置
p->key[j+1]=p->key[j];
p->ptr[j+1]=p->ptr[j];
}
p->key[i+1]=k;
p->ptr[i+1]=q;
if(q!=NULL)
q->parent=p;
p->keynum++;
}
void SplitBTNode(BTNode *&pBTNode *&q){
//将结点p分裂成两个结点前一半保留后一半移入结点q
int i;
int s=(m+1)/2;
q=(BTNode *)malloc(sizeof(BTNode)); //给结点q分配空间
q->ptr[0]=p->ptr[s]; //后一半移入结点q
for(i=s+1;i<=m;i++){
q->key[i-s]=p->key[i];
q->ptr[i-s]=p->ptr[i];
}
q->keynum=p->keynum-s;
q->parent=p->parent;
for(i=0;i<=p->keynum-s;i++) //修改双亲指针
if(q->ptr[i]!=NULL)
q->ptr[i]->parent=q;
p->keynum=s-1; //结点p的前一半保留修改结点p的keynum
}
void NewRoot(BTNode *&tKeyType kBTNode *pBTNode *q){
//生成新的根结点t原p和q为子树指针
t=(BTNode *)malloc(sizeof(BTNode)); //分配空间
t->keynum=1;
t->ptr[0]=p;
t->ptr[1]=q;
t->key[1]=k;
if(p!=NULL) //调整结点p和结点q的双亲指针
p->parent=t;
if(q!=NULL)
q->parent=t;
t->parent=NULL;
}
void InsertBTree(BTree &tint iKeyType kBTNode *p){
/*在树t上结点q的key[i]与key[i+1]之间插入关键字k。若引起
结点过大则沿双亲链进行必要的结点分裂调整使t仍是B树*/
BTNode *q;
int finish_tagnewroot_tags; //设定需要新结点标志和插入完成标志
KeyType x;
if(p==NULL) //t是空树
NewRoot(tkNULLNULL); //生成仅含关键字k的根结点t
else{
x=k;
q=NULL;
finish_tag=0;
newroot_tag=0;
while(finis
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-07 01:39 BTree\
目录 0 2017-12-28 00:12 BTree\.git\
文件 6 2017-12-25 12:00 BTree\.git\COMMIT_EDITMSG
文件 307 2017-12-25 12:01 BTree\.git\config
文件 73 2017-12-25 12:00 BTree\.git\desc
文件 23 2017-12-25 12:00 BTree\.git\HEAD
目录 0 2017-12-28 00:12 BTree\.git\hooks\
文件 478 2017-12-25 12:00 BTree\.git\hooks\applypatch-msg.sample
文件 896 2017-12-25 12:00 BTree\.git\hooks\commit-msg.sample
文件 189 2017-12-25 12:00 BTree\.git\hooks\post-update.sample
文件 424 2017-12-25 12:00 BTree\.git\hooks\pre-applypatch.sample
文件 1642 2017-12-25 12:00 BTree\.git\hooks\pre-commit.sample
文件 1348 2017-12-25 12:00 BTree\.git\hooks\pre-push.sample
文件 4898 2017-12-25 12:00 BTree\.git\hooks\pre-reba
文件 544 2017-12-25 12:00 BTree\.git\hooks\pre-receive.sample
文件 1492 2017-12-25 12:00 BTree\.git\hooks\prepare-commit-msg.sample
文件 3610 2017-12-25 12:00 BTree\.git\hooks\update.sample
文件 361 2017-12-25 12:00 BTree\.git\index
目录 0 2017-12-28 00:12 BTree\.git\info\
文件 240 2017-12-25 12:00 BTree\.git\info\exclude
目录 0 2017-12-28 00:12 BTree\.git\logs\
文件 154 2017-12-25 12:00 BTree\.git\logs\HEAD
目录 0 2017-12-28 00:12 BTree\.git\logs\refs\
目录 0 2017-12-28 00:12 BTree\.git\logs\refs\heads\
文件 154 2017-12-25 12:00 BTree\.git\logs\refs\heads\master
目录 0 2017-12-28 00:12 BTree\.git\logs\refs\remotes\
目录 0 2017-12-28 00:12 BTree\.git\logs\refs\remotes\origin\
文件 145 2017-12-25 12:01 BTree\.git\logs\refs\remotes\origin\master
目录 0 2017-12-28 00:12 BTree\.git\ob
目录 0 2017-12-28 00:12 BTree\.git\ob
文件 139 2017-12-25 12:00 BTree\.git\ob
............此处省略24个文件信息
- 上一篇:基于MAP的图像超分辨率重建算法
- 下一篇:0.96OLED,z-stack驱动
相关资源
- 北京交通大学数据结构大纲考试重点
- 最短路径问题
- 数据结构教程第5版-源程序
- 数据结构课程设计-二叉排序树附详细
- 数据结构经典例题经典考试题复习题
- 空气质量查询_数据结构作业
- 神秘国度的爱情故事 算法与数据结构
- 数据结构课设模拟银行业务
- 目录管理系统数据结构
- 数据结构课程设计 线索二叉树
- 数据结构 文本编辑器
- 高级数据结构课设1.7z
- 数据结构教学计划编制问题
- 广东工业大学数据结构课设---航空航
- 北京交通大学数据结构大纲考试重点
- 数据结构课程设计校园导游完整版
- 数据结构报告 校园导航问题
- 学生成绩管理系统-数据结构课程设计
- 教学计划编制问题有向图和拓扑排序
- 数据结构课程设计之客户积分管理系
- 广工数据结构课程设计完整版
- 数据结构课程设计之贪吃蛇源代码
- 数据结构内排序对比课程设计
- 数据结构 航班订票系统
- 数据结构课程设计大作业-全国交通咨
- 数据结构课程设计报告——在表达式
- 数据结构 迷宫 编码和译码 课设
- 用弗洛伊德算法实现求最短路径的交
- 数据结构试题(哈工大期末考试)
- 北京理工大学数据结构编程练习答案
评论
共有 条评论