• 大小: 727KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

数据结构的课程设计,B树,M=3,附带实验报告,当年不会写,四处找,现在就当是福利后辈了,抹泪。

资源截图

代码片段和文件信息

/*--------bTree.h------*/

#include “B.h“

#define m 3 //2-3树的阶

typedef struct{
KeyType key; //关键字
int others; //其它部分
}Record; //记录类型

typedef struct bTNode{
int keynum; //结点中关键字个数,即结点的大小
int level;//结点的层数,最底层为0
struct bTNode *parent; //指向双亲结点
struct bTNode *lBro *rBro;//左右兄弟结点
struct Node{ //结点向量类型
KeyType key; //关键字向量
struct bTNode *child; //子树指针向量
Record rec; //记录指针向量
}node[m+1]; //keyrec的0号单元未用
}bTNode*bTree; //2-3树结点和2-3树的类型

typedef struct{
bTNode *pt; //指向找到的结点
int i; //1..m,在结点中的关键字序号
int tag; // 1:查找成功,O:查找失败
}Result; //2-3树的查找结果类型


bTree Troot;//2-3树根

void Destroy_bTree(bTree &DT);//销毁
void Init_bTree(bTree &DT);//创空、置空
Status Insert_bTree(bTree &TRecord &r);//在2-3树中插入记录
void Insert_bT(bTree &qint iRecord &rbTree ap);//在结点中插入记录
void NewRoot_bT(bTree &TRecord rbTree ap);//新建结点作为根结点
Result Search_bTree(bTree T KeyType K);//在2-3树中查找记录
void Split_bT(bTree &qbTree &ap);//关键字过多时,分裂结点
void Traverse_bTree(bTree DT);//遍历2-3树
int Search_bT(bTree p KeyType K);//在结点中查找记录
void Visit_bT(bTree DT);//被遍历调用打印
Status Delete_bTree(bTree &DT KeyType k);//在2-3树中删除记录
void Delete_bT(bTree &T int i);//将位于T内第i个结点删除掉
void Change_bTree(bTree &T int i);//调换次序删除
void Merge_bTree(bTree &Tint i);//关键字过少时,合并结点
void Bulid_bTree(bTree &DT);//随机创建2-3树


/*----------Change_bTree------------*/


void Change_bTree(bTree &T int i){//调换次序删除
for(int j=i; jkeynum; j++){
T->node[j] = T->node[j+1];
}
Delete_bT(TT->keynum);
}

/*----------Delete_bT------------*/


void Delete_bT(bTree &T int i){//将位于T内第i个结点删除掉
T->node[i].child = NULL;
T->node[i].key = NULL;
T->node[i].rec.key = NULL;
T->node[i].rec.others = NULL;
if(i)
T->keynum--;
}


/*----------Delete_bTree------------*/


Status Delete_bTree(bTree &DT KeyType k){//在2-3树中删除记录
//删除主要分为终端结点和非终端结点两种情况
Result rs = Search_bTree(DTk);
Troot = DT;
bTree p = DT;
int i = rs.i;

p = rs.pt;
if(rs.tag){
if(rs.pt->level != 0){//非叶子结点
while(p->node[i].child){//查找
p = p->node[i].child;
i = Search_bT(pk);
}
i = i+1;
rs.pt->node[rs.i].key = p->node[i].key;//替换
rs.pt->node[rs.i].rec = p->node[i].rec;
}
if(p->keynum >= (m+1)/2){//再删除
Change_bTree(pi);
}
else{
Merge_bTree(pi);//再合并
if(p == Troot)
DT = p;
}
return TRUE;
}
else 
return FALSE;
}


/*----------Destroy_bTree------------*/


void Destroy_bTree(bTree &dt){//销毁
bTree q[N];
int front = 0 rear = 0;
// 将树根指针进队 
if(dt != NULL){
rear = (rear + 1) % N;
q[rear] = dt;
}
while(front != rear){  //队列非空 
front = (front + 1) % N; // 使队首指针指向队首元素 
dt = q[front];
for(int i=0;ikeynum;i++){
if(dt->node[i].child !=NULL){
rear = (rear + 1) % N;
q[rear] = dt->node[i].child;
}
}
free(dt);
dt = NULL;
}
}

/*----------Init_bTree------------*/


void Init_bTree(bTree &DT){ //创空、置空
DT = (bTree)malloc(sizeof(bTNode));//

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4339  2014-05-06 01:34  c++\B\B.dsp

     文件        510  2014-05-06 00:38  c++\B\B.dsw

     文件        709  2014-05-07 11:46  c++\B\B.H

     文件      50176  2014-05-07 12:40  c++\B\B.ncb

     文件      48640  2014-05-07 12:40  c++\B\B.opt

     文件       1255  2014-05-07 12:18  c++\B\B.plg

     文件      14766  2014-05-07 12:18  c++\B\bTree.cpp

     文件     204837  2014-05-07 12:18  c++\B\Debug\B.exe

     文件     243528  2014-05-07 12:18  c++\B\Debug\B.ilk

     文件     233824  2014-05-07 11:47  c++\B\Debug\B.pch

     文件     549888  2014-05-07 12:18  c++\B\Debug\B.pdb

     文件      29771  2014-05-07 12:18  c++\B\Debug\bTree.obj

     文件      21908  2014-05-06 01:32  c++\B\Debug\B_tree.obj

     文件       5602  2014-05-07 11:47  c++\B\Debug\main.obj

     文件      50176  2014-05-07 12:39  c++\B\Debug\vc60.idb

     文件      53248  2014-05-07 12:18  c++\B\Debug\vc60.pdb

     文件        745  2014-05-06 01:32  c++\B\main.cpp

     文件    1032192  2014-06-21 10:35  c++\数据结构课程设计报告.cy.doc

     目录          0  2014-05-07 12:18  c++\B\Debug

     目录          0  2014-05-07 12:40  c++\B

     目录          0  2014-06-21 10:35  c++

----------- ---------  ---------- -----  ----

              2546114                    21


评论

共有 条评论