logo资料库

2014年福建华侨大学数据结构与C++考研真题.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
2014 年福建华侨大学数据结构与 C++考研真题 第一部分 C++(总分 75 分) 一、单项选择题(18 分,每小题 2 分) 1.若有定义:inta[3][4];,则表达式 sizeof(a)/sizeof(int[4])的值为()。 A)3 B)4 C)5 D)7 2.若有定义:intx=2,y=1,a=3,b=-4,c;,则表达式(c=x>y?-1:a>b?0:1)的值为()。 A)-4 B)0 C)2 D)2 3.已有定义:inta[2][3]={{1,2,3},{4,5,6}},*p=a[1];,则表达式 p[2]的值为()。 A)3 B)4 C)5 D)6 4.若有定义:char*str=“abc\0def”;,则语句 cout< usingnamespacestd;
classA{ intx; public: A(intxx):x(xx){cout<<"constructor"< usingnamespacestd; classA{ intdataA; public: A(intx){dataA=x;cout<<"constructor"< usingnamespacestd; voidfun(unsignedintn){ if(n==1){ cout<<'*'<
for(intk=1;k<=n;k++) cout<<'*'; cout< usingnamespacestd; classStudent{ char*name; intage; floatscore; public: Student(char*n,inta,floats):age(a),score(s){ cout<<"constructing"< usingnamespacestd;
constintN=5; voidmain(void){ inta[N][N],i,j; Boolflag=true; cout<<"enter"<>a[i][j]; for(i=0;i usingnamespacestd; voidfun(char*s1,char*s2){ intlen1=strlen(s1),len2=strlen(s2),i=0; while(*(s2+i)){ *(s1+len1+i)=*(s2+i); i++; } s1[len1+len2]='\0'; } voidmain(void){ char*s1=newchar[100],*s2="lmnopq"; strcpy(s1,"abcde"); fun(s1,s2); cout<<"s1:"<
试程序。 2.(20 分)设计并测试一个简单的整型数组类(IntArray) (1)( 15 分)设计一个整型数组类,包含两个数据成员:int*base(数组元素的基地址),int length(当前数组中的元素个数),类中包含如下主要成员函数和类的友元函数: 构造函数(用来初始化一个整型数组对象,默认元素个数为 0); 拷贝构造函数; 析构函数; 添加一个新元素的函数 addelement(intnewdata),在原来数组的基础上,添加上一个 值为 newdata 的新元素; 读取数组中指定下标的元素 intgetelement(intindex); 输出函数 print(),输出数组中的各个元素。 (2)(5 分)请设计相应的测试程序。 第二部分数据结构(总分 75 分) 一.单项选择题(每题 1.5 分,共 12 分) 1.设某数据结构的二元组形式表示为 A=(D,R),D={01,02,03,04,05,06,07,08, 09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03, 07>,<03,08>,<03,09>},则数据结构 A 是()。 A.线性结构 B.树型结构 C.集合结构 D.图型结构 2.设数组 data[m]作为循环队列 SQ 的存储空间,front 为队头指针,rear 为队尾指针,则 执行出队操作后其头指针 front 值为( )。 A.front=front+1B.front=front-1 C.front=(front-1)%mD.front=(front+1)%m 3.若一棵二叉树具有 10 个度为 2 的结点,则该二叉树的度为 0 的结点个数是()。 A.9 B.11 C.12 D.不确定 4.设 F 是由 T1、T2 和 T3 三棵树组成的森林,与 F 对应的二叉树为 B。T1、T2 和 T3 的结点 数分别为 N1、N2 和 N3,则二叉树 B 的根结点的左子树的结点数为()。 A.N1-1 B.N2-1 C.N2+N3 D.N1+N3 5.设有 n 个关键字具有相同的 Hash 函数值,则用线性探测法把这 n 个关键字映射到 HASH 表中需要做()次线性探测。 A.n2B.n(n+1)C.n(n+1)/2 D.n(n-1)/2 6.设一组权值集合 W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈 夫曼树,则这棵哈夫曼树的带权路径长度为()。 A.129B.219C.189D.229
7.对初始状态为递增序列的表按递增顺序排序,最省时间的是算法。 A.堆排序 B.直接插入排序 C.快速排序 D.简单选择排序 8.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当二分查找值 82 为的结点 时,次比较后查找成功。 A.1B.2C.4D.8 二.问答题(共 38 分) 1.(6 分,每空 2 分)判断带头结点的双向循环链表 L 是否对称相等的算法如下所示,请在 划线处填上正确的语句。 intequal(pointer*L) { Pointer*p,q; intresult; result=1;p=L->next;q=L->pre; while((p<>q)&&((1)_______)) {if(p->data==q->data) {(2)___________; (3)___________; } else result=0; } return(result); } 2.(7 分)一棵二叉树的中序序列和后序序列分别如下,请画出该二叉树。 中序序列:DIGJLKBAECHF 后序序列:ILKJGDBEHFCA (1)请画出这棵二叉树(3 分) (2)请写出这棵二叉树的先序遍历结点序列(2 分) (3)先序线索化这颗二叉树(2 分) 3.(6 分)设在通信中,使用了 ABCDE 五个字符,它们出现的频率分别为: 0.1,0.12,0.2,0.23,0.35。 (1)请给出相应的赫夫曼树(4 分) (2)请给出字符串 BADACE 的赫夫曼编码(2 分) 4.(6 分)已知一组元素为(46,25,78,62,12,37,70,29),完成如下任务: (1)画出按前述次序插入生成的平衡二叉树(4 分) (2)求其在等概率情况下查找成功的 ASL(2 分) 5.(5 分)有一组键值 27,84,21,47,15,25,68,35,24,采用快速排序方法由小到大进行 排序,请写出每趟的结果。 6.(8 分)考虑右边的带权无向图 G,回答如下问题(10 分): (1)(2 分)画出该图的邻接表存储结构,并根据你给出的存储结构完成如下任务; (2)(2 分)写出广度优先遍历该图的顶点序列; (3)(4 分)画出用普里姆算法从该图的顶点 A 构造最小生成树的过程。
三.程序设计题(共 25 分) 1.(12 分)编写算法判断一棵二叉链表表示的二叉树 T 是否是二叉排序树,并输出其中数 据 域最大的结点。 2.(13 分)有一个用邻接表表示的有向图,编写程序判断从顶点 i 至顶点 j(i、j 为顶点 下标)是否有简单路径,若有则打印出该路径上的顶点序列(打印一条简单路径即可)。要 求:先描述图的存储结构,查找邻接点等关于图的操作要自己实现。
分享到:
收藏