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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(清华大学考研真题—清华大学2001年数据结构与程序设计试题.doc)为本站会员(a****2)主动上传,蜗牛文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蜗牛文库(发送邮件至admin@wnwk.com或直接QQ联系客服),我们立即给予删除!

清华大学考研真题—清华大学2001年数据结构与程序设计试题.doc

1、好考研真题网-国内各大高校考研真题清华大学2001年硕士入学数据结构与程序设计试题一、试给出下列有关并查集(mfsets)的操作序列的运算结果:union(1,2) , union(3,4) , union(3,5) , union(1,7) , union(3,6) , union(8,9) , union(1,8) , union(3,10) , union(3,11) , union(3,12) , union(3,13) , union(14,15) , union(16,0) , union(14,16) , union(1,3) , union(1,14)。(union是合并运算,

2、在以前的书中命名为merge)要求(1) 对于union(i,j),以i作为j的双亲; (5分)(2) 按i和j为根的树的高度实现union(i,j),高度大者为高度小者的双亲;(5分)(3) 按i和j为根的树的结点个数实现union(i,j),结点个数大者为结点个数小者的双亲;(5分) 二、设在4地(A,B,C,D)之间架设有6座桥,如图所示: 要求从某一地出发,经过每座桥恰巧一次,最后仍回到原地(1) 试就以上图形说明:此问题有解的条件是什么?(5分)(2) 设图中的顶点数为n,试用C或Pascal描述与求解此问题有关的数据结构并编写一个算法,找出满足要求的一条回路.(10分) 三、针对以

3、下情况确定非递归的归并排序的运行时间(数据比较次数与移动次数):(1) 输入的n个数据全部有序;(5分)(2) 输入的n个数据全部逆向有序;(5分)(3) 随机地输入n个数据.(5分) 四、简单回答有关AVL树的问题.(1) 在有N个结点的AVL树中,为结点增加一个存放结点高度的数据成员,那么每一个结点需要增加多少个字位(bit)?(5分)(2) 若每一个结点中的高度计数器有8bit,那么这样的AVL树可以有多少层?最少有多少个关键码?(5分) 五、设一个散列表包含hashSize=13个表项,.其下标从0到12,采用线性探查法解决冲突. 请按以下要求,将下列关键码散列到表中.10 100 3

4、2 45 58 126 3 29 200 400 0(1) 散列函数采用除留余数法,用%hashSize(取余运算)将各关键码映像到表中. 请指出每一个产生冲突的关键码可能产生多少次冲突. (7分)(2) 散列函数采用先将关键码各位数字折叠相加, 再用%hashSize将相加的结果映像到表中的办法. 请指出每一个产生冲突的关键码可能产生多少次冲突. (8分) 六、设一棵二叉树的结点定义为struct BinTreeNodeElemType data;BinTreeNode *leftChild, *rightChild;现采用输入广义表表示建立二叉树. 具体规定如下:(1) 树的根结点作为由子

5、树构成的表的表名放在表的最前面;(2) 每个结点的左子树和右子树用逗号隔开. 若仅有右子树没有左子树, 逗号不能省略.(3) 在整个广义表表示输入的结尾加上一个特殊的符号(例如”#”)表示输入结果.例如,对于如右图所示的二叉树, 其广义表表示为A(B(D,E(G,),C(,F) A / B C / DE F /G 此算法的基本思路是:依次从保存广义表的字符串ls中输入每个字符. 若遇到的是字母(假定以字母作为结点的值), 则表示是结点的值, 应为它建立一个新的结点, 并把该结点作为左子女(当k=1)或有子女(当k=2)链接到其双亲结点上. 若遇到的是左括号”(“, 则表明子表的开始,将k置为1

6、;若遇到的是右括号”)”, 则表明子表结果. 若遇到的是逗号”,”, 则表示以左子女为根的子树处理完毕,应接着处理以右子女为根的子树, 将k置为2.在算法中使用了一个栈s, 在进入子表之前,将根结点指针进栈, 以便括号内的子女链接之用. 在子表处理结束时退栈. 相关的栈操作如下:MakeEmpty(s) 置空栈Push(s,p) 元素p进栈Pop(s) 进栈Top(s) 存取栈顶元素的函数下面给出了建立二叉树的算法, 其中有5个语句缺失. 请阅读此算法并把缺失的语句补上.(每空3分) Void CreateBinTree(BinTreeNode *&BT, char ls)Stacks; Ma

7、keEmpty(s);BT=NULL;/置二叉树BinTreeNode *p;int k;istream ins(ls);/把串ls定义为输入字符串流对象insChar ch;insch;/从ins顺序读入一个字符While(ch!=”#”)/逐个字符处理,直到遇到#为止Switch(ch)case(: _(1)_k=1;break;case): pop(s);break;case,: _(2)_break;default: p=new BinTreeNode;_(3)_p-leftChild=NULL;p-rightChild=NULL;if(BT=NULL)_(4)_else if (k=

8、1) top(s)-leftChild=p;else top(s)-rightChild=p;_(5)_ 七、下面是一个用C编写的快速排序算法. 为了避免最坏情况,取基准记录pivot采用从left,right和mid=(left+right)/2中取中间值, 并交换到right位置的办法. 数组a存放待排序的一组记录, 数据类型为Type, left和right是呆排序子区间的最左端点和最右端点.Void quicksort(Type a&#;,int left,int right)Type temp;If(leftright)Type pivot=median3(a,left,right)

9、;Int I=left, j=right-1;For( ; ; )While(ij & aipivot) i+;While(ij & pivotaj) j-;if(ipivot)temp=ai: ai=aright; aright=temp;quicksort(a,left,i-1); /递归排序左子区间quicksort(a,i+1,right);/递归排序右子区间(1) 用C或Pascal实现三者取中子程序 median3(a,left,right); (5分)(2) 改写 quicksort 算法, 不用栈消去第二个递归调用 quicksort(a,i+1,right); (5分)(3) 继续改写 quicksort 算法, 用栈消去剩下的递归调用. (5分)更多考研资料,登陆 联系QQ1425536241

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2