资源简介
数据库实验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个文件信息
- 上一篇:计算机专业的外文翻译5000字
- 下一篇:PCB中可以使用的矢量格式的防静电等标记
评论
共有 条评论