欢迎来到天天文库
浏览记录
ID:5556849
大小:260.50 KB
页数:12页
时间:2017-12-18
《bx100436周玲实验9:查找子系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、验证性实验9:查找子系统班级学号BX100436姓名周玲1.实验目的(1)通过查找实验理解查找的基本算法。(2)熟悉各种查找方法的适用场合及平均查找长度。(3)掌握静态查找和动态查找的区别。(4)掌握顺序查找、二分查找的基本思想及其算法。(5)掌握二叉排序树基本思想及其算法。2.实验内容(1)编写顺序查找程序。(2)编写二分查找程序。(3)编写建立二叉排序树的程序。(4)编写在二叉排序树上的查找、插入、删除结点的程序。(5)编写使二叉排序树中序输出的程序。(6)设计一个选择式菜单,一级菜单形式如下
2、:查找子系统*******************************************1------顺序查找**2------二分查找**3------二叉排序树**0------返回*******************************************请选择菜单号(0--3):二叉排序树二级子菜单如下:二叉排序树********************************************1------更新二叉排序树**2------查找结点**3-----
3、-插入结点**4------删除结点**5------中序输出排序树**0------返回********************************************请选择菜单号(0--5):3.实验程序#include#include#defineSEARCHMAX100#defineN10voidSeqSearch(){inta[N],i,x,y;charch;printf("tt建立一个整数的顺序表(以回车符为间隔,以-1结束):
4、");for(i=0;i5、6、ch=='Y'){printf("tt请输入要查找的数据:");scanf("%d",&x);getchar();i=y-1;while(i>=0&&a[i]!=x)i--;i7、f(i==-1)printf("tt抱歉!没有您要查找的数据。");elseprintf("tt您要查找的数据在第%d个位置上。",i+1);printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);}}voidBinSearch(){intR[SEARCHMAX],i,k,low,mid,high,m,nn;charch;printf("tt建立递增有序的查找顺序表(以回车符间隔,以-1结束):");for(i=0;i8、ARCHMAX;i++){printf("tt");scanf("%d",&R[i]);getchar();if(R[i]==-1){nn=i;break;}}printf("tt查找请输入Y,退出输入N:");scanf("%c",&ch);getchar();while(ch=='y'9、10、ch=='Y'){printf("tt请输入要查找的数据:");scanf("%d",&k);getchar();low=0;high=nn-1;m=0;while(low<=high){11、mid=(low+high)/2;m++;if(R[mid]>k)high=mid-1;elseif(R[mid]high){printf("tt抱歉!没有您要查找的数据。");printf("tt共进行%d次比较。",m);if(R[mid]12、",k,mid+1);printf("tt共进行%d次比较。",m);}printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);getchar();}}typedefintKeyType;typedefstructnode{KeyTypekey;structnode*lchild,*rchild;}BSTNode;typedefBSTNode*BSTree;BSTreeCreateBST(void);voidSearchBST(
5、
6、ch=='Y'){printf("tt请输入要查找的数据:");scanf("%d",&x);getchar();i=y-1;while(i>=0&&a[i]!=x)i--;i
7、f(i==-1)printf("tt抱歉!没有您要查找的数据。");elseprintf("tt您要查找的数据在第%d个位置上。",i+1);printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);}}voidBinSearch(){intR[SEARCHMAX],i,k,low,mid,high,m,nn;charch;printf("tt建立递增有序的查找顺序表(以回车符间隔,以-1结束):");for(i=0;i8、ARCHMAX;i++){printf("tt");scanf("%d",&R[i]);getchar();if(R[i]==-1){nn=i;break;}}printf("tt查找请输入Y,退出输入N:");scanf("%c",&ch);getchar();while(ch=='y'9、10、ch=='Y'){printf("tt请输入要查找的数据:");scanf("%d",&k);getchar();low=0;high=nn-1;m=0;while(low<=high){11、mid=(low+high)/2;m++;if(R[mid]>k)high=mid-1;elseif(R[mid]high){printf("tt抱歉!没有您要查找的数据。");printf("tt共进行%d次比较。",m);if(R[mid]12、",k,mid+1);printf("tt共进行%d次比较。",m);}printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);getchar();}}typedefintKeyType;typedefstructnode{KeyTypekey;structnode*lchild,*rchild;}BSTNode;typedefBSTNode*BSTree;BSTreeCreateBST(void);voidSearchBST(
8、ARCHMAX;i++){printf("tt");scanf("%d",&R[i]);getchar();if(R[i]==-1){nn=i;break;}}printf("tt查找请输入Y,退出输入N:");scanf("%c",&ch);getchar();while(ch=='y'
9、
10、ch=='Y'){printf("tt请输入要查找的数据:");scanf("%d",&k);getchar();low=0;high=nn-1;m=0;while(low<=high){
11、mid=(low+high)/2;m++;if(R[mid]>k)high=mid-1;elseif(R[mid]high){printf("tt抱歉!没有您要查找的数据。");printf("tt共进行%d次比较。",m);if(R[mid]12、",k,mid+1);printf("tt共进行%d次比较。",m);}printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);getchar();}}typedefintKeyType;typedefstructnode{KeyTypekey;structnode*lchild,*rchild;}BSTNode;typedefBSTNode*BSTree;BSTreeCreateBST(void);voidSearchBST(
12、",k,mid+1);printf("tt共进行%d次比较。",m);}printf("tt继续查找输入Y,否则输入N:");scanf("%c",&ch);getchar();}}typedefintKeyType;typedefstructnode{KeyTypekey;structnode*lchild,*rchild;}BSTNode;typedefBSTNode*BSTree;BSTreeCreateBST(void);voidSearchBST(
此文档下载收益归作者所有