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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构查找实验报告.docx

1、数据结构查找实验报告实 验 报 告课 程数据结构及算法实验项目8.查找成 绩专业班级*指导教师*姓 名*学号*实验日期*实验八 查找一、实验目的1、 掌握顺序表查找中不同查找方法的查找思想,并能用C/C+语言实现。2、 掌握树表查找中二叉排序树查找、平衡二叉树查找的查找思想,并能用C/C+语言实现。3、 掌握Hash表查找中的查找思想,并能用C/C+语言实现。4、 能够针对具体实际,灵活选用适宜的查找方法。二、实验环境PC微机,Windows,DOS,Turbo C或Visual C+三、实验内容1、二叉排序树查找(1)问题描述查找是计算机操作中的一种重要应用技术,查找的方法有许多,不同的查找

2、方法有不同的查找效率,而二叉排序树查找就是效率较高的查找方法之一。 所谓二叉排序树,就是指将原来已有数据根据大小构成一棵二叉树,二叉树中的所有结点数据满足一定的大小关系,所有左子树中的结点均比根结点小,所有右子树中的结点均比根结点大。 二叉排序树查找是指按照二叉排序树中结点的关系进行查找,查找关键字首先同树根结点进行比较,如果相等则查找成功;如果比根结点小,则在左子树中查找;如果比根结点大,则在右子树中进行查找。这种查找方法可以快速缩小查找范围,大大减少了查找关键字的比较次数,从而提高了查找效率。(2)基本要求编程实现时,体现查找的全过程,即二叉排序树的创建、查找关键字的输入、查找关键字的查找

3、、查找结果的输出等。(3)算法实现#include#includevoid Getemptylist(); / 建立空树void Getlist(); / 建立二叉排序树void SortL(); / 排序void Connectlist(); / 结点连接处理void Lookup(); / 查找typedef struct list int data; struct list *left; struct list *right;JD;JD *head;int L20;int size;int num;int main() Getemptylist(); Getlist(); Lookup(

4、); return 0;/+*void Getemptylist() printf(建立空树:n); head=(JD*)malloc(sizeof(JD); head-left = NULL; head-right = NULL; if(!head) printf(建立失败!n); exit(-1); else printf(建立成功!n); void Getlist() int i; printf(建立二叉排序树:n); printf(请输入元素个数:); scanf(%d,&size); printf(请输入元素:); for(i = 0;i size;i+) scanf(%d,&(Li

5、); SortL(); printf(二叉排序树建立中。n); Connectlist();void SortL() int i,j; int min; for(i = 0;i size;i+) min = Li; for(j = i + 1;j size;j+) if(Lj min) min = Lj; Lj = Li; Li = min; printf(排序后:); for(i = 0;i left = NULL; p-right = NULL; low = 0; high = size; mid = (low + high) / 2; head-data = Lmid; q = head

6、; for(i = 0;i size;i+) q = head;A1: if(Li data) if(q-left = NULL) p-data = Li; q-left = p; p=(JD*)malloc(sizeof(JD); p-left = NULL; p-right = NULL; else q = q-left; goto A1; else if(q-right = NULL) p-data = Li; q-right = p; p=(JD*)malloc(sizeof(JD); p-left = NULL; p-right = NULL; else q = q-right; g

7、oto A1; if(head-left = NULL & head-right = NULL) printf(二叉排序树建立失败!n); else printf(二叉排序树建立成功!n); void Lookup() int i; JD *q; printf(请输入查找元素:); scanf(%d,&num); q = head; for(;) if(num = q-data) printf(查找成功,此元素为:%d,地址为:%dn,q-data,q); break; else if(num data) if(q-left = NULL) printf(查找失败,无此元素n); break;

8、 else q = q-left; else if(q-right = NULL) printf(查找失败,无此元素n); break; else q = q-right; (4)运行截图2、通讯录的管理(1)问题描述试编程完成通讯录的一般性管理工作,如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含姓名、电话号码、住址等个人基本信息。(2)基本要求将建立的通讯录以磁盘文件的形式存储,所有的通讯录管理均以文件操作的方式进行。在查找通讯录中的记录时,以记录的“姓名”为查找关键字进行查找。由于“姓名”是字符串类型的数据,其查找过程比整形关键字的查找过程要复杂,关键字比较过程可调用字符

9、串函数,也可以自己实现其比较过程。(3)算法实现#include#include#include#define size 50void Getemptylist(); / 建立空表void Increase(); / 增加void Modify(); / 修改void Lookup(); / 查找void Delete(); / 删除void See(); / 查看void format(); / 格式化typedef struct list char namesize; / 姓名 char telenumsize; / 电话 char addresssize; / 地址JD;JD Users

10、ize;int main() int a; Getemptylist();A1: printf(请选择操作:n1.增加 2.修改n3.查找 4.删除n5.查看 6.退出n7.格式化n); scanf(%d,&a); switch(a) case 1:Increase();break; / 增加 case 2:Modify();break; / 修改 case 3:Lookup();break; / 查找 case 4:Delete();break; / 删除 case 5:See();break; / 查看 case 6:exit(1);break; / 退出 case 7:format();

11、break; default:printf(input error!n); goto A1; return 0;/+*void Getemptylist() printf(建立空表:n); if(!User) printf(建立失败!n); exit(-1); else printf(建立成功!n); void Increase() FILE *fp; int i = 0; printf(请输入姓名:); scanf(%s,Useri.name); printf(请输入电话:); scanf(%s,Useri.telenum); printf(请输入地址:); scanf(%s,Useri.a

12、ddress); fp = fopen(D:通讯录.txt,a); fprintf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); printf(添加成功!n);void Modify() FILE *fp; char asize; int i,j; int x = 1; fp = fopen(D:通讯录.txt,r); for(i = 0;i 5;i+) fscanf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); pri

13、ntf(请输入需要修改的联系人的姓名:); scanf(%s,a); for(i = 0;i 5;i+) x = 1; for(j = 0;j strlen(a) | j strlen(Useri.name);j+) if(aj != Useri.namej) x = 0; break; if(x = 1) printf(请输入修改后的姓名:); scanf(%s,Useri.name); printf(请输入修改后的电话:); scanf(%s,Useri.telenum); printf(请输入修改后的地址:); scanf(%s,Useri.address); printf(修改成功!修

14、改后:n); printf(姓名 电话 地址n); printf(%6s %11s %6sn,Useri.name,Useri.telenum,Useri.address); break; if(x= 1) fp = fopen(D:通讯录.txt,w); for(i = 0;i 5;i+) fprintf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); if(x = 0) printf(无此联系人!n); void Lookup() FILE *fp; char asize; int i,j; int x

15、= 1; fp = fopen(D:通讯录.txt,r); for(i = 0;i 5;i+) fscanf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); printf(请输入想要查找的联系人的姓名:); scanf(%s,a); for(i = 0;i 5;i+) x = 1; for(j = 0;j strlen(a) | j strlen(Useri.name);j+) if(aj != Useri.namej) x = 0; break; if(x = 1) printf(查找成功!n); prin

16、tf(姓名 电话 地址n); printf(%6s %11s %6snn,Useri.name,Useri.telenum,Useri.address); break; if(x = 0) printf(无此联系人!n); void Delete() FILE *fp; JD maxsize; char asize; int i,j,k; int x = 1; fp = fopen(D:通讯录.txt,r); for(i = 0;i 5;i+) fscanf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); p

17、rintf(请输入想要删除的联系人的姓名:); scanf(%s,a); for(i = 0;i 5;i+) x = 1; for(j = 0;j strlen(a) | j strlen(Useri.name);j+) if(aj != Useri.namej) x = 0; break; if(x = 1) k = 0; for(j = 0;j size;j+) if(j = i) j+; strcpy(maxk.name,Userj.name); strcpy(maxk.address,Userj.address); strcpy(maxk.telenum,Userj.telenum);

18、 k+; for(j = 0;j size;j+) strcpy(Userj.name,maxj.name); strcpy(Userj.address,maxj.address); strcpy(Userj.telenum,maxj.telenum); printf(删除成功!n); break; if(x= 1) fp = fopen(D:通讯录.txt,w); for(i = 0;i 5;i+) fprintf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); if(x = 0) printf(无此联系人

19、!n); void See() FILE *fp; int i; fp = fopen(D:通讯录.txt,r); for(i = 0;i 5;i+) fscanf(fp,%6s%11s%6s,Useri.name,Useri.telenum,Useri.address); fclose(fp); printf(姓名 电话 地址n); for(i = 0;i 5;i+) printf(%6s %11s %6sn,Useri.name,Useri.telenum,Useri.address); void format() FILE *fp; int a; printf(确定格式化?(1.确定 2.取消)n); scanf(%d,&a); if(a = 1) fp = fopen(D:通讯录.txt,w); fclose(fp); printf(格式化成功!n); else if(a = 2) main(); else printf(input error!n); (4)运行截图4、实验总结千变万化,实用性强。

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

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