数据结构-查找-实验报告_第1页
数据结构-查找-实验报告_第2页
数据结构-查找-实验报告_第3页
数据结构-查找-实验报告_第4页
数据结构-查找-实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 Lookup();/void Connectlist(); / typedef struct listint data;struct list *left;struct list *right;JD;JD *head;int L20;int size;int num;int main()Getemptylist();Getlist

4、();Lookup();return 0;/+*void Getemptylist()printf( 建立空树: n);head=(JD*)malloc(sizeof(JD);head-left = NULL;head-right = NULL;if(!head)printf( 建立失败! n);exit(-1);elseprintf( 建立成功! 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;for(i =

6、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; elseq = q-left;goto A1;elseif(q-right = NULL)p-data = Li;q-right = p;p=(JD*)malloc(sizeof(JD); p-left = NULL;p-right = NULL; elseq = q-right;goto A1;if(head-left = NULL

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

8、(q-right = NULL)printf(查找失败,无此元素n);break; else q = q-right;(4)运行截图D :VCvr 1 ? win8Cniri monS D rvflRin 单隔一 r xe请输入兀素:5 5 2 4 8排序后:2 4 5 6 8二史排序树建立中二叉排序树建立成功!盾输入百找元素士 5也找成功.此元素为:5,地址为:7146824Process roTurnod 0 (0 x0) oxecuticn time : 22.351 s Prss anv kev to eomD:VCvc + 50 /mSXCommonMSDcv53Bin 早相 exe

9、2、通讯录的管理(1)问题描述试编程完成通讯录的一般性管理工作,如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含姓名、电话号码、住址等个人基本信息。(2)基本要求将建立的通讯录以磁盘文件的形式存储,所有的通讯录管理均以文件操作的方式进行。在查 找通讯录中的记录时,以记录的“姓名”为查找关键字进行查找。由于“姓名”是字符串类型的数 据,其查找过程比整形关键字的查找过程要复杂,关键字比较过程可调用字符串函数,也可以自 己实现其比较过程。(3)算法实现#include#include#include#define size 50void Getemptylist();/建立空表voi

10、d Increase。;/增加void Modify();/修改void Lookup();/查找void Delete();/删除void See();/查看void format。;/格式化typedef struct list精品文档 欢迎下载 。精品文档 欢迎下载 。char namesize;/姓名char telenumsize;/电话char addresssize;/地址JD;JD Usersize;int main() int a;Getemptylist();A1: printf( 请选择操作: n1. 增加 2. 修改 n3. 查找 4. 删除 n5. 查看 6. 退出

11、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();break;default:printf(input error!n);goto A1;return 0;/+*void Getemptylist() printf( 建立空表: n);if(!User

12、)printf( 建立失败! n);exit(-1);elseprintf( 建立成功! n);void Increase()FILE *fp;int i = 0;printf( 请输入姓名: );scanf(%s,U);printf(请输入电话:);scanf(%s,Useri.telenum);printf(请输入地址:);scanf(%s,Useri.address);通讯录 .txt,a);fprintf(fp,%6s%11s%6s,U,Useri.telenum,Useri.address);fclose(fp);printf( 添加成功! n);

13、void Modify()FILE *fp;char asize;int i,j;int x = 1;通讯录 .txt,r);for(i = 0;i 5;i+)fscanf(fp,%6s%11s%6s,U,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(U);j+)if(aj != Uj)x = 0; break;if(x

14、= 1)printf(请输入修改后的姓名: );scanf(%s,U);精品文档11欢迎下。载精品文档 欢迎下。载printf(请输入修改后的电话:);scanf(%s,Useri.telenum);printf(请输入修改后的地址:);scanf(%s,Useri.address);printf(修改成功!修改后: n);printf(姓名 电话地址 n);printf(%6s %11s %6sn,U,Useri.telenum,Useri.address); break;if(x= 1)通讯录 .txt,w);for(i = 0;i 5;i+)fprin

15、tf(fp,%6s%11s%6s,U,Useri.telenum,Useri.address);fclose(fp);if(x = 0)printf( 无此联系人! n);void Lookup()FILE *fp;char asize;int i,j;int x = 1;通讯录 .txt,r);for(i = 0;i 5;i+)fscanf(fp,%6s%11s%6s,U,Useri.telenum,Useri.address);fclose(fp);printf( 请输入想要查找的联系人的姓名: );scanf(%s,a);for(i = 0;i 5;i

16、+)x = 1;for(j = 0;j strlen(a) | j strlen(U);j+)if(aj != Uj)x = 0;break;if(x = 1)printf(查找成功! n);printf(姓名 电话地址 n);printf(%6s %11s %6snn,U,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;通讯录 .txt

17、,r);for(i = 0;i 5;i+)fscanf(fp,%6s%11s%6s,U,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(U);j+)if(aj != Uj)x = 0;break;if(x = 1)k = 0;for(j = 0;j size;j+)if(j = i)j+;strcpy(,U

18、);strcpy(maxk.address,Userj.address);strcpy(maxk.telenum,Userj.telenum);k+;for(j = 0;j size;j+)strcpy(U,);strcpy(Userj.address,maxj.address);strcpy(Userj.telenum,maxj.telenum);printf(删除成功! n);break;if(x= 1)通讯录 .txt,w);for(i = 0;i 5;i+)fprintf(fp,%6s%11s%6s,U,Useri

19、.telenum,Useri.address);fclose(fp);if(x = 0)printf( 无此联系人! n);void See()精品文档 欢迎下载精品文档 欢迎下载精品文档 欢迎下。载FILE *fp;int i;通讯录 .txt,r);for(i = 0;i 5;i+)fscanf(fp,%6s%11s%6s,U,Useri.telenum,Useri.address);fclose(fp);printf( 姓名 电话地址 n);for(i = 0;i 5;i+)printf(%6s %11s %6sn,U,Useri.telenum,Useri.address);void format()FILE *fp;int a;printf( 确定格式化?( 1. 确定 2. 取消) n);scanf(%d,&a);if(a = 1)通讯录 .txt,w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论