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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构查找实验.docx

1、数据结构查找实验数据结构实验报告课程 数据结构实验 实验名称 查找 系 别 计算机学院 专业班级 组别_一. 实验目的:1. 掌握顺序查找,二分查找的算法2. 能运用线性表的查找方法解决实际问题二. 实验内容()实验题目一:写给出一个无序表A中采用顺序查找算法查找值为x的元素的算法1.要点分析:顺序查找首先从表的先端开始,依次与给定值x进行比较,直达找到与其相等的元素值,返回该元素值的下标,查找成功。否则给出查找失败信息。2.程序源代码:#include#define N 10int search(int A,int x,int n) int i=0; while(i=n) return -1

2、; else return i;void main() int aN=2,38,42,44,25,12,3,1,23,89,d,i,k; printf(A数组下标:n); for(i=0;iN;i+) printf(%d ,i); printf(n); printf(A数组值:n); for(i=0;i=0) printf(a%d=%dn,k,d); else printf(%d未找到n,d);3.实验结果(2)实验题目二:编写一个算法,利用二分查找算法在一个有序表中插入一个元素x,并保持表的有序性。1 要点分析:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两

3、者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。2 程序源代码:#include #include #define maxnum 100int input(int *); /输入数据int search(int *,int,int); /查找插入位置void plug(int *,int,int); /插入数据void main() int datamaxnum,m; int insert=1; m=inp

4、ut(data); printf(请输入要插入的数据: n); /输入插入的数据 scanf(%d,data); /输入插入的数据存放在data数组0号位置 insert=search(data,1,m); /找到数据要插入的位置 plug(data,insert,m); /运用递归的方法插入数据 printf(最后结果: n); for(insert=1;insert=m+1;insert+) printf(%d ,*(data+insert); getchar();int input(int * data) int i,m; printf(请输入该有序表的长度: n); scanf(%d,

5、&m); printf(请按大小顺序输入%d个数据 n,m); for(i=1;ihigh) /没有找到插入位置 return low; else mid=(low+high)/2; if(*(data+mid)= *data) return mid; else if(*(data+mid)*data) high=mid-1; search(data,low,high);void plug(int *data,int insert,int m) /移动并插入数据 int i; for(i=m;i=insert;i-) *(data+i+1)=*(data+i); *(data+insert)=

6、*data;3.实验结果(三)实验题目:设计一个算法,读入一串整数,构造其对应的二叉排序树1.要点分析二叉排序树的递归式定义。二叉排序树又称二叉查找树,它可以是一棵空树,若非空时具有下述性质: 1、若根结点的左子树非空,则左子树上所有结点的关键字值均小于等于根结点的关键字值。 2、若根结点的右子树非空,则右子树上所有结点的关键字值均大于等于根结点的关键字值。 3、根结点的左、右子树也分别为二叉排序树。二叉排序树建立说明:当需要插入一个节点到二叉排序树时,需要先找到它的父节点。其实 它就是用插入的节点不断的和每一个节点比较(第一次当然是和根节点比较啦),如果小于等于则进入左边子树,再与左边子树的

7、根节点比较,直到找到它要放的位置,否则进入右子树,进行上述操作2.源程序代码#include#includetypedef struct node /二叉排序树的结点类型 int key; struct node *lchild,*rchild;BSTNode;typedef BSTNode *BSTree;void insertBST(BSTree *prt,int key) BSTNode *f,*p=*prt; while(p) / 判断数据插入的位置 if(p-key=key) / 树中已有此节点无需插入 return; f=p; p=(keykey)?p-lchild:p-rchil

8、d; p=(BSTNode *)malloc(sizeof(BSTNode); /建立新的结点 p-key=key; p-lchild=p-rchild=NULL; if(*prt=NULL) *prt=p; else if(keykey) f-lchild=p; else f-rchild=p;BSTree createBST(void) BSTree T=NULL; int key; printf(请输入根节点n); /先建立一个根节点 scanf(%d,&key); while(key) insertBST(&T,key); printf(请输入一个数据 以0结束:); scanf(%d

9、,&key); return T;void inorder(BSTree T) /中序遍历 if(T) inorder(T-lchild); printf(%3d ,T-key); inorder(T-rchild); void main() BSTree T; T=createBST(); printf(中序遍历结果:n); inorder(T);3.实验结果三. 个人小结通过这次实验,我对于各类查找的算法都有了很清晰的认识,在实验的过程中我深刻地体会到了作为一个合格的程序员,不仅仅要理解算法还要学会对其灵活运用,一定要多动手,在实践的过程中你会遇到各种意想不到的意外,当运用自己的办法把问题都解决好了之后,自己的编程能力也有了一定的提高。

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

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