2022年数据结构实验七查找定义 .pdf
《2022年数据结构实验七查找定义 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验七查找定义 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验七查找一、实验目的1. 掌握查找的不同方法,并能用高级语言实现查找算法;2. 熟练掌握二叉排序树的构造和查找方法。3. 熟练掌握静态查找表及哈希表查找方法。二、实验内容设计一个读入一串整数,然后构造二叉排序树,进行查找。三、实验步骤1. 从空的二叉树开始,每输入一个结点数据,就建立一个新结点插入到当前已生成的二叉排序树中。2. 在二叉排序树中查找某一结点。3.用其它查找算法进行排序(课后自己做) 。四、实现提示1. 定义结构typedef struct node int key; int other; struct node *lchild, *rchild; bstnode; void
2、inorder ( t ) if (t!=Null) inorder(tlchild); printf(“%4d ”, tkey); inorder(trchild); bstnode *insertbst(t, s) bstnode *s, *t; bstnode *f, *p; p=t; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - while(p!=Null) f=p; if (skey= =p key) return
3、 t; if (skeypkey) p=plchild; else p=prchild; if(t= =Null) return s; if (skeyfkey) flchild=s; else frchild=s; return t; bstnode *creatord( ) bstnode *t, * s; int key; t=Null; scanf( “%d ”,&key); while (key!=0) s=malloc(sizeof (bitree); skey=key; slchild=Null; srchild=Null; scanf( “%d ”, &data); sothe
4、r=data; t=insertbst(t, s); scanf( “%d ”,&key); return t; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 五、思考与提高1. 用其它的查找方法完成该算法。2.比较各种算法的时间及空间复杂度。六、完整参考程序1.折半查找#include #include #define MAX 30 /定义有序查找表的最大长度typedef struct char elemMAX; /有序
5、查找表int length; /length 指示当前有序查找表的长度SSTable; void initial(SSTable &); /初始化有序查找表int search(SSTable,int); /在有序查找表中查找元素void print(SSTable); /显示有序查找表中所有元素void main() SSTable ST; /ST 为一有序查找表int ch,loc,flag=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - -
6、- - - - - - char j; initial(ST); /初始化有序查找表while(flag) printf( 请选择: n); printf(1.显示所有元素 n); printf(2.查找一个元素 n); printf(3.退出n); scanf( %c,&j); switch(j) case 1:print(ST); break; /显示所有元素case 2:printf(请输入要查找的元素: ); scanf(%d,&ch); /输入要查找的元素的关键字loc=search(ST,ch); /查找if(loc!=0) printf( 该元素所在位置是: %dn,loc);
7、/显示该元素位置else printf(%d 不存在 !n,ch);/当前元素不存在break; default:flag=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - printf( 程序运行结束 !按任意键退出 !n); void initial(SSTable &v) /初始化有序查找表int i; printf( 请输入静态表的元素个数:); /输入有序查找表初始化时的长度scanf(%d,&v.length)
8、; printf( 请从小到大输入 %d 个元素(整形数):n,v.length); getchar(); for(i=1;i=v.length;i+) scanf(%d,&v.elemi); / 从小到大输入有序查找表的各元素 int search(SSTable v,int ch) /在有序查找表中查找ch 的位置,成功返回其位置,失败返回0 int low,high,mid; low=1;high=v.length; /置区间初值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
9、5 页,共 13 页 - - - - - - - - - while(lowch) high=mid-1; / 继续在前半区间进行查找else low=mid+1; /继续在后半区间进行查找 return 0; /找不到时, i 为 0 void print(SSTable v) /显示当前有序查找表所有元素int i; for(i=1;i=v.length;i+) printf(%d ,v.elemi); printf(n); 2.二叉排序树的建立与查找#include #include #include #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
10、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - enum BOOLFalse,True; typedef struct BiTNode /定义二叉树节点结构char data; /为了方便,数据域只有关键字一项struct BiTNode *lchild,*rchild; / 左右孩子指针域BiTNode,*BiTree; BOOL SearchBST(BiTree,char,BiTree,BiTree&); /在二叉排序树中查找元素BOOL InsertBST(BiTree &,char);
11、 /在二叉排序树中插入元素BOOL DeleteBST(BiTree &,char); /在二叉排序树中删除元素void Delete(BiTree &); /删除二叉排序树的根结点void InorderBST(BiTree); /中序遍历二叉排序树, 即从小到大显示各元素void main() BiTree T,p; char ch,keyword,j=y; BOOL temp; T=NULL; while(j!=n) printf(1.displayn); printf(2.searchn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构实验七查找定义 2022 数据结构 实验 查找 定义
限制150内