数据结构教程第三十五课实验七查找

数据结构教程第三十五课实验七查找,第1张

数据结构教程第三十五课实验七查找,第2张

教学目的:练习顺序搜索、二分搜索法和二叉排序树
教学重点:
教学难度:
教学内容:
顺序搜索
二分搜索法
顺序搜索和二分搜索法的例子
#包括

typedef int KeyType
typedef struct {
key type key;
int maths;
int英语;
} elem type;
#定义EQ(a,b)((a)= =(b))
#定义LT(a,b)((a)<(b))
#定义LQ(a,b) ((a)elem[i]。key),
&(t->elem[i]。数学),&(t->elem[i]。英语));
i++;
}
fclose(FP);
}

main()
{
element type stu[50];
s table类;
int i,j,k;
时间长;
class . elem = stu;get data(& class);

printf("这个班有%d个学生。\n ",class . length);
printf("输入您要搜索的stuno:\ n ");
scanf("%d ",& k);

i=Search_Seq(class,k);
j=Search_Bin(class,k);
printf("数学英语\ n ");
printf("%d %d\n ",class.elem[i]。数学,elem[i]班。英语);
printf("%d %d\n ",class.elem[j]。数学,class.elem[j]。英语);

for(I = 1;idata = all[I];
create subtree(&(* T)-> l),all,2 * I);
create subtree(&(* T)-> r),all,2 * I+1);
}

create BiTree(BiTree * T)
{
elem type allq = s =(* p)-> l;
while(s-> r)s = s-> r;
s--> r =(* p)-> r;
免费(* p);
(* p)= q;= { 0,1,2,3,0,0,4,5,0,0,0,0,0,6,0,0,0,};
CreateSubTree(T,all,1);
}

printelem(elem type d)
{
printf(" % d \ n ",d);
}

PreOrderTraverse(BiTree T,int(* Visit)(elem type d))
{
if(T){
if(Visit(T-> data))
if(preorder traverse(T-> l,Visit))
if(preorder traverse(T-> r,Visit))return OK;
返回错误;
}否则返回OK;
}

InOrderTraverse(BiTree T,int(* Visit)(elem type d))
{
if(T){
if(in order traverse(T-> l,Visit))
if(Visit(T-> data))
if(in order traverse(T-> r,Visit))返回OK;
返回错误;
}否则返回OK;
}

状态搜索BST(BiTree T,KeyType key,BiTree f,BiTree *p){

如果(!t){ * p = f;返回FALSE}
else if EQ(key,T-> data){ * p = T;返回TRUE}
else if LT(key,T->data) SearchBST(T->l,key,T,p);
else SearchBST(T->r,key,T,p);
}
状态InsertBST(BiTree *T,element type e){
BiTree p;
BiTree s;
如果(!SearchBST(*T,e,NULL,& p)){
s =(BiTree)malloc(sizeof(BiNode));
s-> data = e;s-> l = s-> r = NULL;
如果(!p)* T = s;
else if (LT(e,p-> data))p-> l = s;
else p-> r = s;
返回TRUE
}
否则返回FALSE
}

void Delete(BiTree * p){
BiTree q,s;
如果(!(* p)-> r){
q =(* p);
(* p)=(* p)-> l;
免费(q);
}
else if(!(* p)-> l){
q =(* p);
(* p)=(* p)-> r;
免费(q);
}
否则{

/* q =(* p);s =(* p)-> l;
while(s-> r){ q = s;s = s-> r;}
(* p)-> data = s-> data;
如果(q!=(* p))q-> r = s-> l;
else q-> l = s-> l;
免费;
*/

[16]

}
}

Status DeleteBST(BiTree *T,KeyType key){
if(!(* T))
{返回FALSE}
else{
if ( EQ(key,(* T)-> data))Delete(T);
else if ( LT(key,(*T)->data)) DeleteBST( &((*T)->l),key);
else DeleteBST( &((*T)->r),key);
返回TRUE
}
}


main()
{
BiTree root;
BiTree sroot=NULL;
int i;
int a[10]={45,23,12,3,33, 27,56,90,120,62};
system("cls");
CreateBiTree(&root);
printf("PreOrderTraverse:\n");
PreOrderTraverse(root,printelem);
printf("InOrderTraverse:\n");
InOrderTraverse(root,printelem);
for(i=0;i

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 数据结构教程第三十五课实验七查找

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情