ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:59.75KB ,
资源ID:21930174      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21930174.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验8查找的算法Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验8查找的算法Word文件下载.docx

1、8.1/实现顺序查找的算法#include #define MAXL 100 /定义表中最多记录个数typedef int KeyType;typedef int InfoType;typedef struct KeyType key; /KeyType为关键字的数据类型 InfoType data; /其他数据 NodeType;typedef NodeType SeqListMAXL; /顺序表类型int Search(SeqList R,int n,KeyType k) /顺序查找算法 int i=0; while (i=n) return -1; else %d return i;vo

2、id main() SeqList R; int n=10; KeyType k=5; InfoType a=3,6,2,10,1,8,5,7,4,9; int i; for (i=0;in;i+) /建立顺序表 Ri.key=ai; printf(查找结果:n); if (i=Search(R,n,k)!=-1)n元素%d的位置是:,k,i); elsen元素%d不在表中n,k);8.2/实现折半查找算法#define MAXL 100 /定义表中最多记录个数 typedef char InfoType10; /KeyType为关键字的数据类型 /顺序表类型int BinSearch1(Se

3、qList R,int n,KeyType k) /非递归二分查找算法 int low=0,high=n-1,mid,count=0; while (lowk) /继续在Rlow.mid-1中查找 high=mid-1; else low=mid+1; /继续在Rmid+1.high中查找 return -1;int BinSearch2(SeqList R,KeyType k,int low,int high,int count) /递归二分查找算法 int mid; if(low BinSearch2(R, k,low,mid-1,count); BinSearch2(R, k,mid+1

4、,high,count);else return -1; KeyType k=9; int a=1,2,3,4,5,6,7,8,9,10,i,n=10;i+) /建立顺序表 用非递归方法: if (i=BinSearch1(R,n,k)!元素%d的位置是%dn元素%d不在表中n用递归方法: if (i=BinSearch2(R,k,0,9,0)!8.3/实现二叉排序树的基本运算#include /atoi( )iostream.h /cout,cintypedef int Status;typedef struct BTNode int key; struct BTNode *lchild;

5、struct BTNode *rchild;BTNode;/定义二叉排序树插入结点的算法int BSTInsert(BTNode *&T,int k) if(T=NULL) T=(BTNode *)malloc(sizeof(BTNode); T-lchild=T-rchild=NULL;key=k; return 1; if(k=T-key) return 0; else if(k return BSTInsert(T-lchild, k);rchild, k);/定义二叉排序树的创建算法BTNode *createBST(int k,int n) BTNode *T; T=NULL; fo

6、r(int i=0;=n-1;i+) BSTInsert(T,ki); return T;/判断是否为二叉排序树Status Judge(BTNode *&T) return 1; else if(Tlchild)&(Tlchild);rchild); else return 0;/定义二叉排序树的查找算法BTNode *BSTSearch(BTNode *& return NULL; printf(,T-key); if(T-key=k) return BSTSearch(T- int a50=4,9,0,1,8,6,3,5,2,7; BTNode *bt=createBST(a,10);

7、if(Judge(bt)=0) coutbt不是二叉排序树endl; else coutbt是二叉排序树 cout查找关键字6的查找路径: BTNode *t=BSTSearch(bt,6);8.4/实现哈希表的相关运算#define MaxSize 100 /定义最大哈希表长度#define NULLKEY 0 /定义空关键字值 #define DELKEY -1 /定义被删关键字值 /关键字类型 typedef char * InfoType; /其他数据类型typedef struct /关键字域 /其他数据域 int count; /探查次数域 HashTableMaxSize; /哈

8、希表类型void InsertHT(HashTable ha,int *n,KeyType k,int p) /将关键字k插入到哈希表中 int i,adr; adr=k % p; if (haadr.key=NULLKEY | haadr.key=DELKEY) /xj可以直接放在哈希表中 haadr.key=k; haadr.count=1; else /发生冲突时采用线性探查法解决冲突 i=1; /i记录xj发生冲突的次数 do adr=(adr+1) % p; i+; while (haadr.key!=NULLKEY & haadr.key!=DELKEY); haadr.count

9、=i; n+;void CreateHT(HashTable ha,KeyType x,int n,int m,int p) /创建哈希表 int i,n1=0;m;i+) /哈希表置初值 hai.key=NULLKEY; hai.count=0;i+) InsertHT(ha,&n1,xi,p);int SearchHT(HashTable ha,int p,KeyType k) /在哈希表中查找关键字k int i=0,adr; while (haadr.key!=k) /采用线性探查法找下一个地址 adr=(adr+1) % p; if (haadr.key=k) /查找成功 retur

10、n adr; else /查找失败int DeleteHT(HashTable ha,int p,int k,int *n) /删除哈希表中关键字k int adr; adr=SearchHT(ha,p,k); if (adr!=-1) /在哈希表中找到该关键字 haadr.key=DELKEY; n-; /哈希表长度减1 else /在哈希表中未找到该关键字 return 0;void DispHT(HashTable ha,int n,int m) /输出哈希表 float avg=0; 哈希表地址:ti+) %3d,i); n 哈希表关键字: if (hai.key=NULLKEY |

11、hai.key=DELKEY) printf( /输出3个空格,hai.key); 搜索次数:,hai.count); if (hai.key! hai.key!=DELKEY) avg=avg+hai.count; avg=avg/n; 平均搜索长度ASL(%d)=%gn,n,avg); int x=16,74,60,43,54,90,46,31,29,88,77; int n=11,m=13,p=13,i,k=29; HashTable ha; CreateHT(ha,x,n,m,p);DispHT(ha,n,m); 查找关键字29: i=SearchHT(ha,p,k); if (i! ha%d.key=%dn,i,k); 未找到%dn k=77; 删除关键字%dn DeleteHT(ha,p,k,&n); DispHT(ha,n,m); 插入关键字%dn InsertHT(ha,&n,k,p);四,实验小结1、 通过本次实验,加深了我对查找表的认识。2、 有序表的查找之折半查找:前提必须是有序表,性能只有在均匀分布的时候才是最优的。3、 二叉排序树查找:通过一系列的查找和插入过程形成的树。之所以叫做排序树,因为按照中序遍历可得一个有序的序列。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1