社区
C语言
帖子详情
B-树删除的算法!请教!
六月初六
2003-06-01 12:39:43
谢谢!
...全文
91
1
打赏
收藏
B-树删除的算法!请教!
谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
六月初六
2003-06-01
打赏
举报
回复
/*贴出我的算法 还未调试 差删除函数
*/
#include"stdio.h"
#include"alloc.h"
#include"stdlib.h"
#include"conio.h"
#define NULL 0
#define BOOL int
#define TRUE 1
#define FALSE 0
#define DEPTH int
#define RECORD int
#define M 3
#define KEYTYPE int
#define ERROR 1
typedef struct BTNode
{
int keynum;
struct BTNode *parent;
KEYTYPE key[M+1];
struct BTNode *ptr[M+1];
RECORD *recptr[M+1];
}BTNod,*BTree;
typedef struct
{
BTNode *pt;
int i;
int tag;
}Result;
int Search(BTree T,KEYTYPE K)
{
int i;
for(i=1;(T->key[i]>=K)&&(i<T->keynum);i++);
printf(",%d\t%d\n",i-1,T->key[i-1]);
return i-1;
}
Result SearchBTree(BTree T,KEYTYPE K)
{
BTree p,q;
BOOL found=FALSE;
int i=0;
Result Re;
p=T;
q=NULL;
while(p&&(!found))
{
i=Search(p,K);
if(i>0&&p->key[i]==K)
{
found=TRUE;
}
else
{
q=p;
p=p->ptr[i];
}
}
if(!found)
{
Re.pt=p;
Re.i=i;
Re.tag=(p?1:0);
}
else
{
Re.pt=q;
Re.i=i;
Re.tag=0;
}
return Re;
}
BOOL Insert(BTree T,int i,KEYTYPE K,BTree q)
{
int n;
for(n=T->keynum;n>i;n--)
{
T->key[n]=T->key[n-1];
T->ptr[n]=T->ptr[n-1];
T->recptr[n]=T->recptr[n-1];
}
T->key[i]=K;
T->ptr[i]=q;
T->keynum++;
return TRUE;
}
BOOL split(BTree T,int i,BTree q)
{
int n;
int j;
if(!(q=(BTNode *)malloc(sizeof(BTNode))))exit(ERROR);
q->keynum=0;
j=T->keynum;
for(n=0;i<j;i++,n++)
{
q->key[n]=T->key[i+1];
q->ptr[n]=T->ptr[i+1];
q->recptr[n]=T->recptr[i+1];
q->keynum++;
T->keynum--;
}
q->parent=T->parent;
return TRUE;
}
BTree NewRoot(BTree T,BTree q,KEYTYPE K,BTree ap)
{
if(!(q=(BTNode *)malloc(sizeof(BTNode))))exit(ERROR);
q->keynum=0;
Insert(q,0,0,T);
Insert(q,1,K,ap);
q->parent=NULL;
return q;
}
BTree InsertBTree(BTree T,KEYTYPE K,BTree q,int i)
{
KEYTYPE x=K;
BTree ap=NULL;
BOOL finished=FALSE;
int s;
while(q&&(!finished))
{
Insert(q,i,x,ap);
if(q->keynum<M)
{
finished=TRUE;
}
else
{
s=M/2;
split(q,s,ap);
x=q->key[s+1];
q=q->parent;
if(q)i=Search(q,x);
}
}
if(!finished)T=NewRoot(T,q,x,ap);
return T;
}
BOOL CreateBTree(BTree T)
{
KEYTYPE K;
Result Re;
clrscr();
scanf("%d",&K);
while(K)
{
Re=SearchBTree(T,K);
if(!Re.tag)T=InsertBTree(T,K,Re.pt,Re.i);
else{printf("AAA");}
scanf("%d",&K);
}
return TRUE;
}
BTree InitBTree()
{
return NULL;
}
void printBTree(BTree T)
{
int i;
if(!T)return;
printBTree(T->ptr[0]);
for(i=1;i<T->keynum;i++)
{
printf("%d",T->key[i]);
printBTree(T->ptr[i]);
}
}
void main()
{
BTree T;
T=InitBTree();
CreateBTree(T);
printBTree(T);
}
SCI论文攻略---完整版!!!!
Sample Text这么好的帖子, 这么多人顶起, 已经达到目的了. 虽然此帖被版主扣了16分, 但还是要代表广大虫友们谢谢版主认真负责, 秉公执法, 大公无私的精神! 感谢原创者! 第一部分:选题与创新 一、先想先写最后做: 1. 做研究之前,必须想清楚:结果能不能发表?发表在哪里? 2. 先把文章大框写好,空出数据,等做完实验填完空就可以发了;正所谓心中有沟壑! 3. 在未搞
FP-Tree
算法
的实现
在关联规则挖掘领域最经典的
算法
法是Apriori,其致命的缺点是需要多次扫描事务数据库。于是人们提出了各种裁剪(prune)数据集的方法以减少I/O开支,韩嘉炜老师的FP-Tree
算法
就是其中非常高效的一种。 支持度和置信度 严格地说Apriori和FP-Tree都是寻找频繁项集的
算法
,频繁项集就是所谓的“支持度”比较高的项集,下面解释一下支持度和置信度的概念。 设事务数据库为:
06-数据库检索:如何使用B-
树
对海量磁盘数据建立索引?
你好,我是陈东。在基础篇中,我们学习了许多和检索相关的数据结构和技术。但是在大规模的数据环境下,这些技术的应用往往会遇到一些问题,比如说,无法将数据全部加载进内存。再比如说,无法支持索引的高效实时更新。而且,对于复杂的系统和业务场景,我们往往需要对基础的检索技术进行组合和升级。这就需要我们对实际的业务问题和解决方案十分了解。所以,从这一讲开始,我会和你一起探讨实际工作中的系统和业务问题,分享给你一些工业界中常见的解决方案,帮助你积累对应的行业经验,让你能够解决工作中的检索难题。
[整理I]精选微软等公司数据结构+
算法
面试100题 [第1-40题]
精选微软等公司,数据结构+
算法
,经典面试100题 --------之前40题--------------------------
算法
面试:精选微软等公司经典的
算法
面试100题 第1-40题如下:--------------- --------------1.把二元查找
树
转变成排序的双向链表题目:输入一棵二元查找
树
,将该二元查找
树
转换成一个排...
CMU-TARE 探索
算法
官方社区问答汇总
CMU-TARE 探索
算法
官方社区问答汇总
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章