⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct.h

📁 一个B-树实现与编辑
💻 H
字号:

int s;       //全局变量,s=「m/2  ,B-树除头结点外的所有非终端结点所至少有的子树数目

#define FALSE 0
#define TRUE  1
#define ERROR  0
#define OK   1
#define A    5         //新书每次增加的本数
typedef int Status;     //自定义函数类型

typedef struct Lender{      //借书者信息结点类型
	char card[20];          //书证号
	char time[15];          //应还书时间
	Lender *next;           //指向下一个借书者
}Lender;


typedef struct Record{     //一本书的记录的结点类型
	int num;               //入库书号
	char bookname[30];     //书名
	char name[30];         //著者名 
	int now;               //书的现存量
	int total;             //书的总库存量
	Lender *next;          //指向第一个借此书者
}Record;

#define m 3               //B-树的阶数
typedef struct BTNode{     //B树结点类型
	int keynum;             //关键字数
	struct BTNode *parent;   //结点双亲指针
	int key[m+1];            //关键字数组
	struct BTNode *ptr[m+1];  //子树指针数组
	Record *recptr[m+1];      //记录指针数组
}BTNode,*BTree;
BTree T=NULL;



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




void Print(BTree &T,int k)//以凹入表形式递归法打印B-树
{
	BTree q;
	q=T;
	if(q)
	{
		
		cout<<setw(k)<<" ";
		for(int j=1;j<=q->keynum;j++)   
			cout<<q->key[j]<<" ";
		cout<<endl;
		k+=3;
		for(int l=0;l<=q->keynum;l++)
			Print(q->ptr[l],k);/*递归调用输出子树关键字*/   
	}
}  




	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -