mirror of
https://github.com/This-weiyuqing/DSAndOS.git
synced 2026-10-18 03:03:58 +08:00
update
This commit is contained in:
1 parent
16d694ffe3
commit
35e5484d7c
183 files changed
+362
-7145
No files matched your search
@@ -0,0 +1,67 @@
|
||||
//算法7.1 顺序查找
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define MAXSIZE 100
|
||||
#define OK 1;
|
||||
|
||||
typedef struct{
|
||||
int key;//关键字域
|
||||
}ElemType;
|
||||
|
||||
typedef struct{
|
||||
ElemType *R;
|
||||
int length;
|
||||
}SSTable;
|
||||
|
||||
int InitList_SSTable(SSTable &L)
|
||||
{
|
||||
L.R=new ElemType[MAXSIZE];
|
||||
if (!L.R)
|
||||
{
|
||||
cout<<"初始化错误";
|
||||
return 0;
|
||||
}
|
||||
L.length=0;
|
||||
return OK;
|
||||
}
|
||||
|
||||
int Insert_SSTable(SSTable &L)
|
||||
{
|
||||
int j=0;
|
||||
for(int i=0;i<MAXSIZE;i++)
|
||||
{
|
||||
L.R[i].key=j;
|
||||
L.length++;
|
||||
j++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Search_Seq(SSTable ST, int key){
|
||||
//在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为
|
||||
//该元素在表中的位置,否则为0
|
||||
for (int i=ST.length; i>=1; --i)
|
||||
if (ST.R[i].key==key) return i; //从后往前找
|
||||
return 0;
|
||||
}// Search_Seq
|
||||
|
||||
void Show_End(int result,int testkey)
|
||||
{
|
||||
if(result==0)
|
||||
cout<<"未找到"<<testkey<<endl;
|
||||
else
|
||||
cout<<"找到"<<testkey<<"位置为"<<result<<endl;
|
||||
return;
|
||||
}
|
||||
void main()
|
||||
{
|
||||
SSTable ST;
|
||||
InitList_SSTable(ST);
|
||||
Insert_SSTable(ST);
|
||||
int testkey1=7,testkey2=200;
|
||||
int result;
|
||||
result=Search_Seq(ST, testkey1);
|
||||
Show_End(result,testkey1);
|
||||
result=Search_Seq(ST, testkey2);
|
||||
Show_End(result,testkey2);
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
//算法7.10 哈希表的查找
|
||||
//- - - - -开放地址法哈希表的存储表示- - - - -
|
||||
#define m 16 //哈希表的表长
|
||||
#define NULLKEY 0 //单元为空的标记
|
||||
|
||||
struct HashTable{
|
||||
int key; //关键字项
|
||||
// InfoType otherinfo; //其他数据项
|
||||
};
|
||||
|
||||
// 算法7.10为哈希表查找的算法,采用线性探测法处理冲突。
|
||||
// 【算法实现】
|
||||
|
||||
int H(int key)
|
||||
{
|
||||
int result;
|
||||
result=key%13;
|
||||
return result;
|
||||
}
|
||||
|
||||
int SearchHash(HashTable HT[],int key){
|
||||
//在哈希表HT中查找关键字为key的元素,若查找成功,返回哈希表的单元标号,否则返回-1
|
||||
int H0=H(key); //根据哈希函数H(key)计算哈希地址
|
||||
int Hi;
|
||||
if (HT[H0].key==NULLKEY) return -1; //若单元H0为空,则所查元素不存在
|
||||
else if (HT[H0].key==key) return H0; //若单元H0中元素的关键字为key,则查找成功
|
||||
else{
|
||||
for(int i=1;i<m;++i){
|
||||
Hi=(H0+i)%m; //按照线性探测法计算下一个哈希地址Hi
|
||||
if (HT[Hi].key==NULLKEY) return -1; //若单元Hi为空,则所查元素不存在
|
||||
else if (HT[Hi].key==key) return Hi; //若单元Hi中元素的关键字为key,则查找成功
|
||||
}//for
|
||||
return -1;
|
||||
}//else
|
||||
}//SearchHash
|
||||
|
||||
void main()
|
||||
{
|
||||
int result;
|
||||
int a[16]={-1,14,1,68,27,55,19,20,84,79,23,11,10,-1.-1.-1};
|
||||
HashTable HT[m];
|
||||
for(int i=0;i<16;i++)
|
||||
{
|
||||
HT[i].key=a[i];
|
||||
}
|
||||
result=SearchHash(HT,55);
|
||||
if(result!=-1)
|
||||
{
|
||||
cout<<"在第"<<result<<"位置找到"<<endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"未找到"<<endl;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
//算法7.2 设置监视哨的顺序查找
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define MAXSIZE 100
|
||||
#define OK 1;
|
||||
|
||||
typedef struct{
|
||||
int key;//关键字域
|
||||
}ElemType;
|
||||
|
||||
typedef struct{
|
||||
ElemType *R;
|
||||
int length;
|
||||
}SSTable;
|
||||
|
||||
int InitList_SSTable(SSTable &L)
|
||||
{
|
||||
L.R=new ElemType[MAXSIZE];
|
||||
if (!L.R)
|
||||
{
|
||||
cout<<"初始化错误";
|
||||
return 0;
|
||||
}
|
||||
L.length=0;
|
||||
return OK;
|
||||
}
|
||||
|
||||
int Insert_SSTable(SSTable &L)
|
||||
{
|
||||
int j=1;//空出ST.R[0]的位置
|
||||
for(int i=1;i<MAXSIZE;i++)
|
||||
{
|
||||
L.R[i].key=j;
|
||||
L.length++;
|
||||
j++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Search_Seq(SSTable ST, int key){
|
||||
//在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为
|
||||
//该元素在表中的位置,否则为0
|
||||
ST.R[0].key = key; //“哨兵”
|
||||
for(int i = ST.length; ST.R[i].key!=key; --i) ; //从后往前找
|
||||
return i;
|
||||
}// Search_Seq
|
||||
void Show_End(int result,int testkey)
|
||||
{
|
||||
if(result==0)
|
||||
cout<<"未找到"<<testkey<<endl;
|
||||
else
|
||||
cout<<"找到"<<testkey<<"位置为"<<result<<endl;
|
||||
return;
|
||||
}
|
||||
void main()
|
||||
{
|
||||
SSTable ST;
|
||||
InitList_SSTable(ST);
|
||||
Insert_SSTable(ST);
|
||||
int testkey1=7,testkey2=200;
|
||||
int result;
|
||||
result=Search_Seq(ST, testkey1);
|
||||
Show_End(result,testkey1);
|
||||
result=Search_Seq(ST, testkey2);
|
||||
Show_End(result,testkey2);
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
//算法7.3 折半查找
|
||||
|
||||
|
||||
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define MAXSIZE 100
|
||||
#define OK 1;
|
||||
|
||||
typedef struct{
|
||||
int key;//关键字域
|
||||
}ElemType;
|
||||
|
||||
typedef struct{
|
||||
ElemType *R;
|
||||
int length;
|
||||
}SSTable;
|
||||
|
||||
int InitList_SSTable(SSTable &L)
|
||||
{
|
||||
L.R=new ElemType[MAXSIZE];
|
||||
if (!L.R)
|
||||
{
|
||||
cout<<"初始化错误";
|
||||
return 0;
|
||||
}
|
||||
L.length=0;
|
||||
return OK;
|
||||
}
|
||||
|
||||
int Insert_SSTable(SSTable &L)
|
||||
{
|
||||
int j=1;
|
||||
for(int i=1;i<MAXSIZE;i++)
|
||||
{
|
||||
L.R[i].key=j;
|
||||
L.length++;
|
||||
j++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Search_Bin(SSTable ST,int key) {
|
||||
// 在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为
|
||||
// 该元素在表中的位置,否则为0
|
||||
int low=1,high=ST.length; //置查找区间初值
|
||||
int mid;
|
||||
while(low<=high) {
|
||||
mid=(low+high) / 2;
|
||||
if (key==ST.R[mid].key) return mid; //找到待查元素
|
||||
else if (key<ST.R[mid].key) high = mid -1; //继续在前一子表进行查找
|
||||
else low =mid +1; //继续在后一子表进行查找
|
||||
}//while
|
||||
return 0; //表中不存在待查元素
|
||||
}// Search_Bin
|
||||
|
||||
void Show_End(int result,int testkey)
|
||||
{
|
||||
if(result==0)
|
||||
cout<<"未找到"<<testkey<<endl;
|
||||
else
|
||||
cout<<"找到"<<testkey<<"位置为"<<result<<endl;
|
||||
return;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
SSTable ST;
|
||||
InitList_SSTable(ST);
|
||||
Insert_SSTable(ST);
|
||||
int testkey1=7,testkey2=200;
|
||||
int result;
|
||||
result=Search_Bin(ST, testkey1);
|
||||
Show_End(result,testkey1);
|
||||
result=Search_Bin(ST, testkey2);
|
||||
Show_End(result,testkey2);
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
//算法7.4 二叉排序树的递归查找
|
||||
//算法7.5 二叉排序树的插入
|
||||
//算法7.6 二叉排序树的创建
|
||||
//算法 7.7 二叉排序树的删除
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define ENDFLAG '#'
|
||||
//char a[10]={'5','6','7','2','1','9','8','10','3','4','#'};//全局变量
|
||||
typedef struct ElemType{
|
||||
char key;
|
||||
}ElemType;
|
||||
|
||||
typedef struct BSTNode{
|
||||
ElemType data; //结点数据域
|
||||
BSTNode *lchild,*rchild; //左右孩子指针
|
||||
}BSTNode,*BSTree;
|
||||
|
||||
|
||||
//算法7.4 二叉排序树的递归查找
|
||||
BSTree SearchBST(BSTree T,char key) {
|
||||
//在根指针T所指二叉排序树中递归地查找某关键字等于key的数据元素
|
||||
//若查找成功,则返回指向该数据元素结点的指针,否则返回空指针
|
||||
if((!T)|| key==T->data.key) return T; //查找结束
|
||||
else if (key<T->data.key) return SearchBST(T->lchild,key); //在左子树中继续查找
|
||||
else return SearchBST(T->rchild,key); //在右子树中继续查找
|
||||
} // SearchBST
|
||||
|
||||
|
||||
|
||||
//算法7.5 二叉排序树的插入
|
||||
void InsertBST(BSTree &T,ElemType e ) {
|
||||
//当二叉排序树T中不存在关键字等于e.key的数据元素时,则插入该元素
|
||||
if(!T) { //找到插入位置,递归结束
|
||||
BSTree S = new BSTNode; //生成新结点*S
|
||||
S->data = e; //新结点*S的数据域置为e
|
||||
S->lchild = S->rchild = NULL; //新结点*S作为叶子结点
|
||||
T =S; //把新结点*S链接到已找到的插入位置
|
||||
}
|
||||
else if (e.key< T->data.key)
|
||||
InsertBST(T->lchild, e ); //将*S插入左子树
|
||||
else if (e.key> T->data.key)
|
||||
InsertBST(T->rchild, e); //将*S插入右子树
|
||||
}// InsertBST
|
||||
|
||||
|
||||
|
||||
//算法7.6 二叉排序树的创建
|
||||
void CreateBST(BSTree &T ) {
|
||||
//依次读入一个关键字为key的结点,将此结点插入二叉排序树T中
|
||||
T=NULL;
|
||||
ElemType e;
|
||||
cin>>e.key; //???
|
||||
while(e.key!=ENDFLAG){ //ENDFLAG为自定义常量,作为输入结束标志
|
||||
InsertBST(T, e); //将此结点插入二叉排序树T中
|
||||
cin>>e.key; //???
|
||||
}//while
|
||||
}//CreatBST
|
||||
|
||||
void DeleteBST(BSTree &T,char key) {
|
||||
//从二叉排序树T中删除关键字等于key的结点
|
||||
BSTree p=T;BSTree f=NULL; //初始化
|
||||
BSTree q;
|
||||
BSTree s;
|
||||
/*------------下面的while循环从根开始查找关键字等于key的结点*p-------------*/
|
||||
while(p){
|
||||
if (p->data.key == key) break; //找到关键字等于key的结点*p,结束循环
|
||||
f=p; //*f为*p的双亲结点
|
||||
if (p->data.key> key) p=p->lchild; //在*p的左子树中继续查找
|
||||
else p=p->rchild; //在*p的右子树中继续查找
|
||||
}//while
|
||||
if(!p) return; //找不到被删结点则返回
|
||||
/*―考虑三种情况实现p所指子树内部的处理:*p左右子树均不空、无右子树、无左子树―*/
|
||||
if ((p->lchild)&& (p->rchild)) { //被删结点*p左右子树均不空
|
||||
q = p;
|
||||
s = p->lchild;
|
||||
while (s->rchild) //在*p的左子树中继续查找其前驱结点,即最右下结点
|
||||
{q = s; s = s->rchild;} //向右到尽头
|
||||
p->data = s->data; //s指向被删结点的“前驱”
|
||||
if(q!=p){
|
||||
q->rchild = s->lchild; //重接*q的右子树
|
||||
}
|
||||
else q->lchild = s->lchild; //重接*q的左子树
|
||||
delete s;
|
||||
}//if
|
||||
else{
|
||||
if(!p->rchild) { //被删结点*p无右子树,只需重接其左子树
|
||||
q = p; p = p->lchild;
|
||||
}//else if
|
||||
else if(!p->lchild) { //被删结点*p无左子树,只需重接其右子树
|
||||
q = p; p = p->rchild;
|
||||
}//else if
|
||||
/*――――――――――将p所指的子树挂接到其双亲结点*f相应的位置――――――――*/
|
||||
if(!f) T=p; //被删结点为根结点
|
||||
else if (q==f->lchild) f->lchild = p; //挂接到*f的左子树位置
|
||||
else f->rchild = p; //挂接到*f的右子树位置
|
||||
delete q;
|
||||
}
|
||||
}//DeleteBST
|
||||
|
||||
//算法 7.7 二叉排序树的删除
|
||||
|
||||
//中序遍历
|
||||
void InOrderTraverse(BSTree &T)
|
||||
{
|
||||
if(T)
|
||||
{
|
||||
InOrderTraverse(T->lchild);
|
||||
cout<<T->data.key;
|
||||
InOrderTraverse(T->rchild);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
BSTree T;
|
||||
cout<<"请输入若干字符,用回车区分,以#结束输入"<<endl;
|
||||
CreateBST(T);
|
||||
cout<<"当前有序二叉树中序遍历结果为"<<endl;
|
||||
InOrderTraverse(T);
|
||||
char key;//待查找或待删除内容
|
||||
cout<<"请输入待查找字符"<<endl;
|
||||
cin>>key;
|
||||
BSTree result=SearchBST(T,key);
|
||||
if(result)
|
||||
{cout<<"找到字符"<<key<<endl;}
|
||||
else
|
||||
{cout<<"未找到"<<key<<endl;}
|
||||
cout<<"请输入待删除的字符"<<endl;
|
||||
cin>>key;
|
||||
DeleteBST(T,key);
|
||||
cout<<"当前有序二叉树中序遍历结果为"<<endl;
|
||||
InOrderTraverse(T);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
//算法7.8 B-树的查找
|
||||
//算法7.9 B-树的插入
|
||||
|
||||
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
#define OK 1
|
||||
#define m 3 //B-树的阶,暂设为3
|
||||
typedef struct BTNode{
|
||||
int keynum; //结点中关键字的个数,即结点的大小
|
||||
BTNode *parent; //指向双亲结点
|
||||
int key[m+1]; //关键字矢量,0号单元未用
|
||||
BTNode *ptr[m+1]; //子树指针矢量
|
||||
}BTNode,*BTree;
|
||||
|
||||
//- - - - - B-树的查找结果类型定义- - - - -
|
||||
struct Result{
|
||||
BTNode *pt; //指向找到的结点
|
||||
int i; //1..m,在结点中的关键字序号
|
||||
int tag; //1:查找成功,0:查找失败
|
||||
};
|
||||
|
||||
|
||||
int Search(BTree T,int key)
|
||||
{
|
||||
BTree p=T;
|
||||
int endnum;
|
||||
if(p) //树不为空时
|
||||
{
|
||||
endnum=p->keynum; //获得首节点包含的记录个数
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0; //返回没找到
|
||||
}
|
||||
int i=0;
|
||||
if(endnum==0)
|
||||
{
|
||||
return i; //树存在,但仅有一个为空根节点
|
||||
}
|
||||
else if(key>=p->key[endnum])//节点不为空,但当前值比最大的key还大
|
||||
{
|
||||
i=endnum;
|
||||
return i;
|
||||
}
|
||||
else if(key<=p->key[1]) //节点不为空,但当前值比最小的key还小
|
||||
{
|
||||
return i;}
|
||||
else
|
||||
{
|
||||
for(i=1;i<endnum;i++) //有合适的位置,即处于当前结点的最大和最小值之间,或找到了
|
||||
{
|
||||
if(p->key[i]<=key && key<p->key[i+1])
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Insert(BTree &q,int i,int x,BTree &ap)
|
||||
{//将x插入q结点的i+1位置中
|
||||
int j;
|
||||
for(j=m-1;j>i;j--)
|
||||
{
|
||||
//将插入位置之后的key全部后移一位
|
||||
q->key[j+1]=q->key[j];
|
||||
}
|
||||
for(j=m;j>i;j--)
|
||||
{
|
||||
//相应地也移动其后ptr的位置
|
||||
q->ptr[j]=q->ptr[j-1];
|
||||
}
|
||||
q->key[i+1]=x;//插入x到该位置
|
||||
q->ptr[i+1]=ap;
|
||||
q->keynum++;
|
||||
}
|
||||
|
||||
void split(BTree &q,int s,BTree &ap)
|
||||
{ //将q->key[s+1,..,m], q->ptr[s+1,..,m]移入新结点*ap作为右结点
|
||||
//原结点作为新的左侧结点
|
||||
//中间值被保存在ap[0]->key中,等待找到跳转回InsertBTree()寻找到到合适的插入位置插入
|
||||
int i;
|
||||
ap=new BTNode;
|
||||
for(i=s+1;i<=m;i++)
|
||||
{ //将q->key[s+1,..,m]保存到ap->key[0,..,m-s+1]中
|
||||
//将q->ptr[s+1,..,m]保存到ap->ptr[0,..,m-s+1]中
|
||||
ap->key[i-s-1]=q->key[i];
|
||||
ap->ptr[i-s-1]=q->ptr[i];
|
||||
}
|
||||
if(ap->ptr[0])
|
||||
{
|
||||
//当ap有子树的时候
|
||||
for(i=0;i<=1;i++)
|
||||
{
|
||||
//将ap的子树的父亲改为ap自己
|
||||
ap->ptr[i]->parent=ap;
|
||||
}
|
||||
}
|
||||
ap->keynum=(m-s)-1;
|
||||
ap->parent=q->parent;//将ap的父亲改为q的父亲
|
||||
|
||||
q->keynum=q->keynum-(m-s);//修改q的记录个数
|
||||
}
|
||||
|
||||
void NewRoot(BTree &T,BTree q,int x,BTree &ap)//生成含信息(T, x, ap)的新的根结点*T,原T和ap为子树指针
|
||||
{
|
||||
BTree newT=new BTNode;//新建一个结点作为新的根
|
||||
|
||||
newT->key[1]=x;//写入新根的key[1]
|
||||
newT->ptr[0]=T;//将原来的树根作为新根的左子树
|
||||
newT->ptr[1]=ap;//ap作为新根的右子树
|
||||
newT->keynum=1;
|
||||
newT->parent=NULL;//新根的父亲为空
|
||||
|
||||
ap->parent=newT;//ap的父亲为新根
|
||||
T->parent=newT;//T的父亲为新根
|
||||
|
||||
T=newT;//树改成新根引导的
|
||||
}
|
||||
|
||||
//算法7.9 B-树的插入
|
||||
int InsertBTree(BTree &T,int K,BTree q,int i){
|
||||
int x=K;
|
||||
BTree ap=NULL;
|
||||
int finished=FALSE;//x表示新插入的关键字,ap为一个空指针
|
||||
while(q&&!finished){
|
||||
Insert(q,i,x,ap); //将x和ap分别插入到q->key[i+1]和q->ptr[i+1]
|
||||
if (q->keynum<m)
|
||||
finished=TRUE; //插入完成
|
||||
else{ //分裂结点*q
|
||||
int s= m/2;
|
||||
split(q,s,ap);
|
||||
x=ap->key[0];// x=q->key[s];
|
||||
//将q->key[s+1..m], q->ptr[s..m]和q->recptr[s+1..m] 移入新结点*ap
|
||||
q=q->parent;
|
||||
if(q)
|
||||
{
|
||||
i=Search(q,x);
|
||||
} //在双亲结点*q中查找x的插入位置
|
||||
} //else
|
||||
} //while
|
||||
if(!finished) //T是空树(参数q初值为NULL)或者根结点已分裂为结点*q和*ap
|
||||
NewRoot(T,q,x,ap); //生成含信息(T, x, ap)的新的根结点*T,原T和ap为子树指针
|
||||
return OK;
|
||||
} //InsertBTree //InsertBTree
|
||||
|
||||
//算法7.8 B-树的查找
|
||||
Result SearchBTree(BTree &T, int key){
|
||||
/*在m阶B-树T上查找关键字key,返回结果(pt,i,tag)。若查找成功,则特征值tag=1,指针pt所指结点中第i个关键字等于key;否则特征值tag=0,等于key的关键字应插入在指针pt所指结点中第i和第i+1个关键字之间*/
|
||||
BTree p=T;
|
||||
BTree q=NULL;
|
||||
int found=FALSE;
|
||||
int i=0; //初始化,p指向待查结点,q指向p的双亲
|
||||
while(p&&!found){
|
||||
i=Search(p,key);
|
||||
//在p->key[1..keynum]中查找i,使得:p->key[i]<=key<p->key[i+1]
|
||||
if(i>0&&p->key[i]==key)
|
||||
found=TRUE; //找到待查关键字
|
||||
else
|
||||
{
|
||||
q=p;
|
||||
p=p->ptr[i];
|
||||
}
|
||||
}
|
||||
Result result;
|
||||
if(found)
|
||||
{
|
||||
result.pt=p;
|
||||
result.i=i;
|
||||
result.tag=1;
|
||||
return result;
|
||||
} //查找成功
|
||||
else
|
||||
{
|
||||
result.pt=q;
|
||||
result.i=i;
|
||||
result.tag=0;
|
||||
return result;
|
||||
} //查找不成功,返回K的插入位置信息
|
||||
}//SearchBTree
|
||||
|
||||
void InitialBTree(BTree &T)
|
||||
{
|
||||
//初始化一个空的根
|
||||
T->keynum=0;
|
||||
T->parent=NULL;
|
||||
for(int i=0;i<m+1;i++)
|
||||
{
|
||||
T->ptr[i]=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
BTree T=new BTNode;
|
||||
InitialBTree(T);
|
||||
//先用SearchBTree()找到要插入的位置,得到一个Result结构体
|
||||
//再用InsertBTree()插入数据
|
||||
Result result;
|
||||
int a[11]={45,24,53,90,3,12,50,61,70,100};
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
result=SearchBTree(T,a[i]);
|
||||
if(result.tag==0)
|
||||
{
|
||||
InsertBTree(T,a[i],result.pt,result.i);
|
||||
}
|
||||
}
|
||||
cout<<"OK";
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user