2013春 数据结构(二)试卷真题_第1页
2013春 数据结构(二)试卷真题_第2页
2013春 数据结构(二)试卷真题_第3页
2013春 数据结构(二)试卷真题_第4页
2013春 数据结构(二)试卷真题_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、第 11页 共 12页成绩上海大学20122013学年度春季学期试卷a课程名: 数据结构(二)课程号: 08305010 学分: 4 应试人声明: 我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。应试人 应试人学号 应试人所在院系 题号(分值)一(10)二(15)三(15)四(24)五(26)六(10)得分得分得分 一、判断题,叙述正确的标记t,错误的标记f(每题1分,共10分)1. 任意一棵二叉树都可以转换为树来表示 ( )2. 折半查找进行时间性能分析的判定树不一定是完全二叉树。( )3. 散列表的平均

2、查找长度只与采用的散列函数及处理冲突的方法有关。( )4. 对 b 树删除某一关键字值时,可能会引起结点的分裂。 ( )5. 有e条边的无向图,在邻接表中有e个结点。( )6. 十字链表是有向图的一种存储结构。( )7. 不同的求最小生成树的方法最后得到的生成树是相同的。( )8. 若一个有向图的邻接矩阵对角线以下元素均为零,则该图的拓扑有序序列必定存在。( )9. 顺序表上的直接选择排序是一种稳定的排序方法。( )10. 对长度为n的表作快速排序,最坏情况下,算法时间复杂度为o(n2)。( )二、选择题(每题1分,共15分)1. 如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可

3、采用( )法。a分块查找 b顺序查找 c 折半查找 d 基于属性的查找2. 在一个无向图中,所有顶点的度数之和等于所有边数( )倍。a1/2 b2 c1 d43. 用dfs遍历一个无环有向图,并在dfs算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。a逆拓扑有序 b拓扑有序 c无序的 4. 下列哪一种图的邻接矩阵是对称矩阵?( )a有向图 b无向图 caov网 daoe网5. 用邻接矩阵a表示图,判定任意两个顶点vi和vj之间是否有长度为m 的路径相连,则只要检查( )的第i行第j列的元素是否为零即可。ama ba cam dam-16. 下面哪一方法可以判断出一个有向图是否有环(回路

4、)a深度优先遍历 b. 拓扑排序 c. 求最短路径 d. 求关键路径7. 7. 在图采用邻接表存储时,求最小生成树的 prim 算法的时间复杂度为( )。a. o(n) b. o(n+e) c. o(n2) d. o(n3)8. 8下列关于aoe网的叙述中,不正确的是( )。a关键活动不按期完成就会影响整个工程的完成时间b任何一个关键活动提前完成,那么整个工程将会提前完成c所有的关键活动提前完成,那么整个工程将会提前完成d某些关键活动提前完成,那么整个工程将会提前完成9. 二叉查找树在( )时其查找效率最低。a结点太多 b完全二叉树 c呈单枝树 d结点太复杂10. 设有一个用线性探测法解决冲突

5、得到的散列表:0123456789101325801617614散列函数为h(k)=k mod 11,若要查找元素14,探测的次数是( )。a18 b 9 c 3 d 611. 下列排序方法中,( )是稳定的排序方法 a直接选择排序 b折半插入排序 c希尔排序 d快速排序12. 下述排序方法中,比较次数与待排序记录的初始状态无关的是( )。 a. 插入排序和快速排序 b. 归并排序和快速排序c. 选择排序和基数排序 d.插入排序和归并排序13. 设有5000个元素,希望用最快的速度挑选出前10个最大的,下列排序方法中采用( )方法最好。a. 快速排序 b. 堆排序 c. 希尔排序 d. 归并排

6、序14. 并查集的结构是( )a. 二叉链表存储的二叉树 b. 双亲表示法存储的树 c. 三叉链表存储的二叉树 d. 线性链表15. 下列哪一个关键码序列不符合堆的定义?( )a. a,c,d,g,h,m,p,q,r,x b. a,c,m,d,h,p,x,g,q,rc. a,d,p,r,c,q,x,m,h,g d. a,d,c,m,p,g,h,x,r,q得分得分三、填空题(每空1分,共15分)1. g是一个非连通无向图,共有28条边,则该图至少有_个顶点。2. 已知一无向图g=(v,e),其中v=a,b,c,d,e, e=(a,b),(a,d),(a,c),(d,c),(b,e)现用某一种图遍

7、历方法从顶点a开始遍历图,得到的序列为abecd,则采用的是_ _遍历方法。 3. 求图的最小生成树有两种算法,其中_算法适合于求稀疏图的最小生成树。4. 求从某源点到其余各顶点的dijkstra算法在图的顶点数为10,用邻接矩阵表示图时计算时间约为10ms,则在图的顶点数为40,计算时间约为_ms。5. 设有向图有n个顶点和e条边,进行拓扑排序时,总的计算时间复杂度为_。6. 设线性表(a1,a2,a500)元素的值由小到大排列。对一个给定的k值,在等概率情况下,用顺序查找法查找一个记录,查找成功的平均查找长度asl为 ;用二分法检索查找表中与k相等的元素,在查找不成功的情况下至多比较_次。

8、用分块查找(索引表和各块内均用顺序查找),若分成25块,查找成功的其平均查找长度为_。7. 在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用折半法查找关键码值8,需做的关键码比较次数为_ _,查找关键码值20,需做的关键码比较次数为_ _.8. 对于一个高度为h(空树的高度为-1)的avl树,其最少结点数是 。反之,对于一个有n个结点的avl树, 其最大高度是 ,最小高度是 。9. 设用希尔排序对数组98,36,19,5,47,23,1,8,10,7进行排序,给出的步长(也称增量序列)依次是5、3、1,则写出第一趟结束后,数组中数据的排列第三个元素是(从0开始计

9、数 ) 。10. 对一组记录(54, 38, 106, 21, 15, 72, 60, 45, 83)进行直接插入排序,当把元素60插入到有序表时,为寻找插入位置需比较 次。四、简答题(共24分)1. (8分)已知2棵2-3 树(3阶b-树)如下: (1) 对树(a),请分别画出先后插入26,85两个新结点后的树形;(2) 对树(b),请分别画出先后删除53,37两个结点后的树形。 (a)53 90452430 371261 7050100 【解答】:(1)(2)2. (8分)给定5个村庄(a、b、c、d、e)之间的交通图如下所示,若村庄i到j有道路,则将顶点i到j用有向边连接,边上的wij表

10、示这条道路的长度。现在请回答以下问题:(1)画出该有向图的邻接表存储结构 (2)求其它各村庄到村庄b的最短路径和最短路径长度。(3)要从这5个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能各村到医院的来回路程最短?说明解答上述问题的算法。【解答】:(1)(2)(3)3. (8分)对初始序列(58,85,47,39,70,47*,101,68,10,66,34)按递增方式进行排序。(1)给出快速排序的第一趟排序结果(以第1个元素58为基准元素)。(2)选取d = 5,3,1,给出希尔排序的第一趟排序结果。(3)写出二路归并的第一趟排序结果。(4)给出基数排序的第一趟的回收结果。【解

11、答】:(1)快速排序的第一趟排序结果为:(2)希尔排序的第一趟排序结果为:(3)二路归并的第一趟排序结果为:(4)基数排序的第一趟回收结果是:得分五、算法分析题(每空2分,共26分)1(8分)下列递归算法的功能是:从大到小输出给定二叉排序树中所有关键字不小于x的数据元素。该算法的时间复杂度为o(log2n+m),其中n为二叉排序树中的结点数,m为输出的数据元素个数。请完善该算法。提示:算法可以借助逆中序遍历二叉排序树来实现。所谓逆中序遍历二叉树是指:如果当前结点p非空,则先逆中序遍历p的右二叉树;然后访问p结点;最后再逆中序遍历p的左二叉树。在本算法中访问p结点时,如果p的值小于x,则算法结束

12、,否则输出p的值。void printnlt (bstreenode<type>* p, const type x ) if (p) (1) ;if (p->data<x) /当遇到小于x的元素时立即结束运行 (2) ;; cout << (3) <<endl;(4) ;/printnlt(1) _(2) _(3) _(4) _ 2 (10分) 在有向图的邻接表存储结构中,为每个顶点v增加一个mpl域,其定义为图中所有顶点到达顶点v的最长路径长度(路径上的边数)。下面算法完成对有向无环图g中每个顶点的mpl值,如果g无回路,则求出各顶点的mpl,

13、并返回success;否则返回fail。template <class elemtype>status fillmpl(const adjlistdirgraph<elemtype> &g) / 初始条件:存在有向图g/ 操作结果:如g无回路,则求出g中每个顶点的mpl,并返回success,否则返回failint *indegree = new intg.getvexnum();/ 顶点入度数组int v, u, mpl, count = 0, top = -1;for (v = 0; v < g.getvexnum(); v+) indegreev =

14、 0; / 初始化顶点v的入度为0g.setmpl(v, 0); / 初始化v顶点的mpl为0 for (v = 0; v < g.getvexnum(); v+) / 统计图g各顶点的入度for (u = g.firstadjvex(v); u != -1; u = g.nextadjvex(v, u)indegreeu+;for (v = 0; v < g.getvexnum(); v+)if (indegreev = 0) / 入度为0的顶点入栈 (1) ; top = v; while ( (2) )/ 栈非空v = top; (3) ; mpl = g.getmpl(v)

15、 + 1;count+;/ 已求出mpl的顶点数累加for (u = g.firstadjvex(v); u != -1; u = g.nextadjvex(v, u)/ 对v的每个后继顶点u入度减1,并修改其mpl if (mpl > g.getmpl(u) (4) ;if (-indegreeu = 0)/ u入度为0,将u入栈 indegreeu = top; top = u; /end for /end whiledelete indegree;/ 释放indegree所占用的存储空间if ( (5) ) return fail;/ 图g有回路else return succes

16、s;/ 求mpl成功(1) _(2)_ (3) _(4) _ (5) _ 3 (8分)折半插入排序的算法基本思想是:设在排序表中有n个数据元素arr0,arr1,arrn-1。其中,arr0,arr1,arri-1是已经排好序的部分数据元素序列,在插入arri时,利用折半查找方法寻找arri的插入位置。在下面算法的 处,填上适当语句,实现上面的算法。【注】:关键字用成员函数getkey()获取。template <class type> void binaryinsertsort ( sortlist<type> & table ) element<typ

17、e> temp; int low , high, mid ;for ( int i = 1; i < table.currentsize; i+) low = 0; high = i-1; temp = table.arri; while ( low <= high ) (1) ; if (2) ) high = mid - 1; else low = mid + 1; for (int k = i-1; k >= low; k- ) (3) ; (4) ; (1) _(2) _得分(3) _(4) _ 六、算法设计题(10分)在有向图中顶点的度等于其入度与出度之和,现

18、定义有向图的度为其所有顶点度的最大值。试编写算法countdegree(g),在有向图的邻接表存储结构上求有向图g的度。下面是有向图的邻接表存储结构类模板的部分定义:template <class elemtype>class adjlistdirgraphprotected:/ 邻接表的数据成员:int vexnum, vexmaxnum, arcnum;/ 顶点数目、允许的顶点最大数目和边数adjlistgraphvex<elemtype> *vextable;/ 顶点表public:/ 抽象数据类型方法声明及重载编译系统默认方法声明:adjlistdirgraph

19、(elemtype es, int vertexnum, int vertexmaxnum = default_size);/ 构造函数adjlistdirgraph(int vertexmaxnum = default_size);/构造函数adjlistdirgraph(); / 析构函数 int getvexnum() const; / 求有向网的顶点个数 int getarcnum() const; / 求有向网的边数个数 int firstadjvex(int v) const; / 求有向网中顶点v的第一个邻接点序号int nextadjvex(int v1, int v2) ;

20、/ 求顶点v1的相对于v2的下一个邻接点序号 ;编写的算法:template <class elemtype> int countdegree(const adjlistdirgraph<elemtype> &g)/ 返回有向图g的度数值上海大学20122013学年度春季学期试卷a课程名: 数据结构(二)课程号: 08305010 学分: 4 参考答案和评分标准 数据结构课程组:曹旻,滕中梅,沈俊,张景峤,许庆国,郑宇一、判断题(10分)(答案惟一,每小题1分)题号12345678910答案ftffftftft二、选择题(15分)(答案惟一,每小题1分)题号12

21、3456789101112131415答案ababcbbbcdbcbbc三、填空题(15分)(答案的写法不惟一,意思正确即可)1 9 ;2入深度优;3 克鲁斯卡尔(kruskal);4 160 ;5 o(n+e); 6 501/2 , 9 , 21/2+26/2 = 47/2; 7 3, 4 ;8 nh = fh+3 1, fh是斐波那契数, 3 / 2 * log2 (n + 1) , élog2 ( n+1)ù -1;95;103四、简答题(共24分)(答案的写法不惟一,可酌情给分)1.2. 1)2,3)3. (1)快速排序的第一趟排序结果为:34,10,47,39,4

22、7*,58,101,68,70,66,85.(2)希尔排序的第一趟排序结果为:34,85,47,10,66,47*,101,68,39,70,58.(3)二路归并的第一趟排序结果为:58,85,39,47,47*,70,68,101,10,66,34.(4)基数排序的第一趟回收结果是:70,10,101,34,47,47*,66,58,85,68,39.五、算法分析题(每空2分,共26分)(答案的写法不惟一,可酌情给分)1. (1) printnlt ( p->rightchild, x); (2) exit() or return;(3) p->data; (4) printnlt ( p->leftchild, x);2. (1): indegreev = top (2): top != -1 (3): top = indegreev(4): g.setmpl(u, mpl) (5): c

温馨提示

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

评论

0/150

提交评论