• 大小: 225KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: B+树  B树  

资源简介

数据库实验B+树,实现文件存储,并且能够正确实现查找,插入,删除功能

资源截图

代码片段和文件信息

// BTreeAdd.cpp 
#include “stdafx.h“
#include “BTreeAdd.h“


void BTreeAdd::ReadLeafNode(BTreeLeafNode* rint BlockNum) //从磁盘读取节点
{
DBFile.seekg(BlockNum*sizeof(BTreeLeafNode)ios::beg);
DBFile.read((char*)(r)sizeof(BTreeLeafNode));
}
void BTreeAdd::WriteLeafNode(BTreeLeafNode* wint BlockNum) //向磁盘写入节点
{
DBFile.seekg(BlockNum*sizeof(BTreeLeafNode)ios::beg);
DBFile.write((const char*)(w)sizeof(BTreeLeafNode));
DBFile.flush();
}
void BTreeAdd::ReadNode(BTreeNode* rint BlockNum) //从磁盘读取节点
{
DBFile.seekg(BlockNum*sizeof(BTreeNode)ios::beg);
DBFile.read((char*)(r)sizeof(BTreeNode));
}
void BTreeAdd::WriteNode(BTreeNode* wint BlockNum) //向磁盘写入节点
{
DBFile.seekg(BlockNum*sizeof(BTreeNode)ios::beg);
DBFile.write((const char*)(w)sizeof(BTreeNode));
DBFile.flush();
}
//打印查找返回三元素节点函数
void BTreeAdd::BPrintTriNode(TripleBTree p)
{
cout<<“搜索到的值为:“<key[p.insCot].number<<“元素位置为“< cout<<“号码名字为:“<key[p.insCot].name< BTreePrintMidNode(p.RetNode);
}
//打印中间节点信息
void BTreeAdd::BTreePrintMidNode(BTreeNode* p)
{
cout<<“元素为为:“;
for(int i=1;i<=p->n;i++)
{
cout<key[i].number<<“  “<ChildPtr[i]<<“  “;
if(i%4==0) cout<
}
printf(“块号为:%d父节点为:%d节点个数为%d\n“p->BlockCotp->ParaentNodep->n);
printf(“左兄弟节点为:%d右兄弟为:%d\n“p->LeftBrop->RightBro);
}
//打印叶节点信息
void BTreeAdd::BTreePrintLeafNode(BTreeLeafNode* Leaf)
{
cout<<“叶节点为:“;
for(int i=0;in;i++)
{
cout<key[i].number<<“  “;
if(i%5==0) cout< }
printf(“块号为:%d父节点为:%d左兄弟为%d右兄弟为%d\n元素个数为%d\n“
Leaf->BlockCotLeaf->ParaentNodeLeaf->LeftBroLeaf->RightBroLeaf->n);
}
//B+树查找功      能
TripleBTree BTreeAdd::Search(const TelNumber& needNumber)
{
// cout<<“搜索中\n“;
TripleBTree result; //返回结果
ReadNode(rootDBInfo.root); //读出跟节点
BTreeNode* p=root;
int inscot=0; //当节点不为空的时
while(p->n) //设置p节点的右边界,共有有效数据为n个
{
// BTreePrintMidNode(p);//下标从1-n,0为最小数据,n+1为最大数据

p->key[p->n+1]=MAXKEY; //n //判断该节点是否有关键字,利用二分查找
if(p->n<0)
{
exit(1);
}

if(p->key[1]>needNumber) //小于节点最小元素,多加这步判断是否可以提高速度
{
inscot=0; //元素不存在
}
else if(p->key[p->n] {
inscot=p->n; //元素不存在
}
else //元素位于节点内部二分查找
{
inscot=Fine2Fen(pneedNumber.number0p->n);
}
// cout<<“查找下一个位置“<ChildPtr[inscot]< if((p->ChildPtr[inscot])<0) //如果到达ye节点则跳出
{
// cout<<“已经到达叶节点\n“;
break;
}
//打印查找点的路径信息
ReadNode(pp->ChildPtr[inscot]); //读取当前节点的子节点
}
if(p->key[inscot]==needNumber) //如果找到关键字
{
result.RetNode=p;
result.insCot=inscot;
result.isIn=1;
return result;
}
else
{
result.RetNode=p; //如果没有找到关键字则返回可以插入的节点
result.insCot=inscot+1; //可插入的位置
result.isIn=0; //搜索失败返回可插入的位置
return result;
}
}
//二分查找返回元素在节点中的位置,大于等于

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-06-29 17:38  数据库实验2\
     目录           0  2011-06-29 17:09  数据库实验2\B+树08版本\
     目录           0  2011-06-29 17:09  数据库实验2\B+树08版本\BTreeAdd+\
     文件         893  2011-05-31 16:02  数据库实验2\B+树08版本\BTreeAdd+.sln
     文件       14336  2011-06-29 17:09  数据库实验2\B+树08版本\BTreeAdd+.suo
     文件        4632  2011-06-02 12:40  数据库实验2\B+树08版本\BTreeAdd+\BTreeAdd+.vcproj
     文件        1411  2011-06-29 17:09  数据库实验2\B+树08版本\BTreeAdd+\BTreeAdd+.vcproj.tanlang.mobilechan.user
     文件        1427  2011-06-02 12:49  数据库实验2\B+树08版本\BTreeAdd+\BTreeAdd+.vcproj.WWW-17C5C65F49E.Administrator.user
     文件       16661  2011-06-02 01:50  数据库实验2\B+树08版本\BTreeAdd+\BTreeAdd.cpp
     文件        5905  2011-06-02 12:47  数据库实验2\B+树08版本\BTreeAdd+\BTreeAdd.h
     文件        2224  2011-06-02 12:48  数据库实验2\B+树08版本\BTreeAdd+\BTreeAddMain.cpp
     文件        1195  2011-05-31 16:02  数据库实验2\B+树08版本\BTreeAdd+\ReadMe.txt
     文件         214  2011-05-31 16:02  数据库实验2\B+树08版本\BTreeAdd+\stdafx.cpp
     文件         233  2011-05-31 16:02  数据库实验2\B+树08版本\BTreeAdd+\stdafx.h
     文件         498  2011-05-31 16:02  数据库实验2\B+树08版本\BTreeAdd+\targetver.h
     目录           0  2011-06-29 17:09  数据库实验2\B+树08版本\Debug\
     文件       55808  2011-06-02 12:49  数据库实验2\B+树08版本\Debug\BTreeAdd+.exe
     目录           0  2011-06-29 17:37  数据库实验2\B+树10版本\
     目录           0  2011-06-29 17:37  数据库实验2\B+树10版本\BTreeAdd\
     文件         891  2011-05-31 07:52  数据库实验2\B+树10版本\BTreeAdd.sln
     文件       16614  2011-05-31 22:36  数据库实验2\B+树10版本\BTreeAdd\BTreeAdd.cpp
     文件        5882  2011-05-31 21:06  数据库实验2\B+树10版本\BTreeAdd\BTreeAdd.h
     文件        4523  2011-05-17 14:01  数据库实验2\B+树10版本\BTreeAdd\BTreeAdd.vcxproj
     文件        1498  2011-05-15 21:44  数据库实验2\B+树10版本\BTreeAdd\BTreeAdd.vcxproj.filters
     文件         143  2011-05-15 16:18  数据库实验2\B+树10版本\BTreeAdd\BTreeAdd.vcxproj.user
     文件        2057  2011-05-31 21:09  数据库实验2\B+树10版本\BTreeAdd\BTreeAddMain.cpp
     文件           0  2011-05-31 13:47  数据库实验2\B+树10版本\BTreeAdd\config.txt
     文件        2200  2011-05-31 13:51  数据库实验2\B+树10版本\BTreeAdd\number.txt
     文件        1560  2011-05-15 16:18  数据库实验2\B+树10版本\BTreeAdd\ReadMe.txt
     文件         213  2011-05-15 16:18  数据库实验2\B+树10版本\BTreeAdd\stdafx.cpp
     文件         233  2011-05-15 16:18  数据库实验2\B+树10版本\BTreeAdd\stdafx.h
............此处省略73个文件信息

评论

共有 条评论