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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(对含有n个互不相同元素的集合.doc)为本站会员(hskm5268)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

对含有n个互不相同元素的集合.doc

1、第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 1/14第七章 查找1、对含有 n 个互不相同元素的集合,同时找最大元和最小元至少需进行多少次比较? 找最大元和最小元至少需要进行 n-1 次比较。2、若对具有 n 个元素的有序的顺序表和无序的顺序表分别进行顺序查找,试讨论在查找成功两者在等概率时的平均查找长度: 有序表与无序表一样,都为(n+1)/2。3、为什么有序的单链表不能进行折半查找?因为折半查找需要随机知道每个数据元素的位置,这是单链表做不到的。4、对给定的关键字集合,以不同的次序插入初始为空的树中,是否有可能得到同一棵

2、二叉排序树?不可能。5、写出顺序表上实现顺序查找的算法,并将监视哨设在高地址端。int seqsearch(S_TBL tbl, int key)tbl.elem0.key = key;int i = 0;for(i = tbl.length; i = 0 -i);return i;6、试写出二分查找的递归算法。int Binarysearch(S_TBL tbl, int low, int high, int key)if(key = tbl.elem(low+high)/2)printf(“Find succeed!”);return (low+high)/2;else if(key ke

3、y;+i);if(i ST.length | ST.elemi.key high) return 0; /*查找不到时返回*/第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 3/14mid = (low+high)/2;if(ST.elemmid.key = key) return mid;else if(ST.elemmid.keykey)return Search_Bin_Recursive(ST,key,low,mid-1);else return Search_Bin_Recursive(ST,key,mid+1,hig

4、h);/Search_Bin_Recursive 9、折半查找,返回小于或等于待查元素的最后一个结点号。int Locate_Bin(SSTable ST,int key) int *r;r = ST.elem;if(key = rST.length.key) return ST.length;low = 1;high = ST.length;while(low = rmid.key /*超过最大元素*/low = 1;high = L.blknum;第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 6/14found = 0;w

5、hile(low L.idxmid-1.maxkey)found = 1;else if(key L.idxmid.maxkey)low = mid+1;else high=mid-1;i = L.idxmid.firstloc; /*块的下界*/j = i + blksize - 1; /*块的上界*/temp = L.elemi-1; /保存相邻元素*/L.elemi-1 = key; /*设置监视哨*/for(k = j;L.elemk != key; -k); /*顺序查找*/L.elemi-1 = temp; /*恢复元素*/第七章 查找成都东软信息技术学院 Computer Dep

6、artment 计算机系 段恩泽 2019-04-27 7/14if(k data = key) return L.t;else if(L.t-datakey)for(p = L.h,i = 1;p-data != key;p = p-next,+i);第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 8/14elsefor(p = L.t,i = L.tpos;p-data != key;p = p-next,+i);L.t = p; /*更新 t 指针*/return p;/*Search_CSList*/分析:由于题目中假定

7、每次查找都是成功的,所以本算法中没有关于查找失败的处理.由微积分可得,在等概率情况下,平均查找长度约为 n/3. 12、在有序双向循环链表存储结构上的查找算法,假定每次查找都成功。typedef struct DLNode *pre;int data;DLNode *next; DLNode; typedef struct DLNode *sp;int length; DSList; /*供查找的双向循环链表类型 */DLNode *Search_DSList(DSList if(p-data key)while(p-data key) p = p-pre;L.sp = p;else if(p

8、-data data next;L.sp = p;return p;/*Search_DSList*/13、判断二叉树 T 是否二叉排序树,是则返回 1,否则返回 0。int last = 0;int flag = 1; 第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 10/14int Is_BSTree(Bitree T)if(T-lchild if(T-data data;if(T-rchild return flag;/*Is_BSTree */14、找到二叉排序树 T 中小于 x 的最大元素和大于 x 的最小元素。int

9、 last = 0; void MaxLT_MinGT(BiTree T,int x) if(T-lchild) 第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 11/14MaxLT_MinGT(T-lchild,x); /*本算法仍是借助中序遍历来实现*/ if(lastdata = x) /*找到了小于 x 的最大元素*/printf(“a=%dn“,last);if(last data x) /*找到了大于 x 的最小元素*/printf(“b=%dn“,T-data);last = T-data;if(T-rchild)

10、 MaxLT_MinGT(T-rchild,x);/*MaxLT_MinGT */15、从大到小输出二叉排序树 T 中所有不小于 x 的元素。void Print_NLT(BiTree T,int x) if(T-rchild) Print_NLT(T-rchild,x);第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 12/14if(T-data data);if(T-lchild) Print_NLT(T-lchild,x); /*先右后左的中序遍历*/*Print_NLT */16、删除二叉排序树 T 中所有不小于 x 元

11、素结点,并释放空间。void Delete_NLT(BiTree if(T-datalchild;第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 13/14free(q); /*如果树根不小于 x,则删除树根,并以左子树的根作为新的树根*/if(T) Delete_NLT(T,x); /*继续在左子树中执行算法*/*Delete_NLT */17、打印输出后继线索二叉排序树 T 中所有大于 a 且小于 b 的元素。void Print_Between(BiThrTree T,int a,int b) p = T;while(!p-ltag) p = p-lchild; /*找到最小元素*/while(p /*输出符合条件的元素*/if(p-rtag) 第七章 查找成都东软信息技术学院 Computer Department 计算机系 段恩泽 2019-04-27 14/14p = p-rtag;elsep = p-rchild;while(!p-ltag) p=p-lchild; /*转到中序后继*/*while*/*Print_Between */

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报