首页 数据结构:查找子系统

数据结构:查找子系统

举报
开通vip

数据结构:查找子系统/**题目:编写循序查找程序*编写二分查找程序*编写建立二叉排序树的程序*编写在二叉排序树上的查找、输入、删除结点的程序*编写二叉排序树的中序输出的程序*设计一个选择式菜单,一级菜单形式如下:*查找子系统************************************1------顺序查找***2------二分查找***3------二叉排序树***0------返回************************************请选择菜单号(0--3):*二叉排序树的二级菜单如下:*二叉排序树*...

数据结构:查找子系统
/**题目:编写循序查找程序*编写二分查找程序*编写建立二叉排序树的程序*编写在二叉排序树上的查找、输入、删除结点的程序*编写二叉排序树的中序输出的程序*设计一个选择式菜单,一级菜单形式如下:*查找子系统************************************1------顺序查找***2------二分查找***3------二叉排序树***0------返回************************************请选择菜单号(0--3):*二叉排序树的二级菜单如下:*二叉排序树***************************************1------更新二叉排序树***2------查找结点***3------插入结点***4------删除结点***5------中序输出排序树***0------返回***************************************请选择菜单号(0--5):*/#include#include#include#defineSEARCHMAX30typedefstructnode{inttrData;//根节点structnode*lchild;//左子树structnode*rchild;//右子树}BtNode,*pBtNode;voidseqSearch();voidbinSearch();voidbtSearch();pBtNodecreateBT();voidsearchBT(pBtNodeT,intk);voidinsBT(pBtNode*T,intk);voiddelBT(pBtNode*T,intk);voidinorderBT(pBtNodeT);voidmain(){intchoice,k=1;while(k){printf("\n查找子系统\n");printf("*********************************\n");printf("*1------顺序查找*\n");printf("*2------二分查找*\n");printf("*3------二叉排序树*\n");printf("*0------返回*\n");printf("*********************************\n");printf("请选择菜单号(0--3):");fflush(stdin);scanf("%d",&choice);switch(choice){case1:seqSearch();break;case2:binSearch();break;case3:btSearch();break;case0:k=0;break;default:printf("输入错误,请重新输入。");getchar();k=1;break;}}}voidseqSearch()//顺序查找{inta[SEARCHMAX],x,y,i;charch;printf("建立一个整数的顺序表(以-1结束):");for(i=0;ix)//在左边{high=mid-1;}elseif(b[mid]high){printf("对不起,没有找到该数据。\n");printf("共进行%d次比较。\n",n);if(b[mid]trData==k)//判断是否找到该数据{printf("已找到数据。\n");return;}f=(ktrData)?f->lchild:f->rchild;//判断下一个查找的位置}printf("没有找到数据。\n");}voidinsBT(pBtNode*T,intk)//插入二叉树结点{pBtNodef,p;p=(*T);//指向指针的指针while(p)//当结点不为空{if(p->trData==k){printf("树中已有%d,不需要插入。",k);return;}else{f=p;p=(ktrData)?p->lchild:p->rchild;//判断插入的数据的位置}}p=(BtNode*)malloc(sizeof(BtNode));//分配空间p->trData=k;p->lchild=p->rchild=NULL;if((*T)==NULL){(*T)=p;}else{if(ktrData){f->lchild=p;}else{f->rchild=p;}}}voiddelBT(pBtNode*T,intk)//删除二叉树结点{pBtNodep,q,child,parent=NULL;p=*T;while(p)//找到输入的数据的位置{if(p->trData==k){break;}parent=p;//记录上一个结点p=(ktrData)?p->lchild:p->rchild;}if(!p)//没有找到位置{printf("没有找到你要删除的数据结点。\n");return;}q=p;if(q->lchild&&q->rchild){for(parent=q,p=q->rchild;p->lchild;parent=p,p=p->lchild){;}}child=(p->lchild)?p->lchild:p->rchild;//下一个指针的指向if(!parent){*T=child;}else{if(p==parent->lchild){parent->lchild=child;}else{parent->rchild=child;}if(p!=q){q->trData=p->trData;}}free(p);}voidinorderBT(pBtNodeT)//中序遍历二叉树{if(T!=NULL){inorderBT(T->lchild);printf("%5d",T->trData);inorderBT(T->rchild);}}
本文档为【数据结构:查找子系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥20.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:doc
大小:11KB
软件:Word
页数:10
分类:
上传时间:2022-05-11
浏览量:12