数据结构下载6.docx
- 文档编号:28405573
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:73
- 大小:97.43KB
数据结构下载6.docx
《数据结构下载6.docx》由会员分享,可在线阅读,更多相关《数据结构下载6.docx(73页珍藏版)》请在冰豆网上搜索。
数据结构下载6
中央广播电视大学
计算机科学与技术专业数据结构试题
(2)
题号
一
二
三
四
五
六
总分
得分
2004年1月已考
一、单项选择题,在括号内填写所选择的标号(每小题1分,共12分)
1.若需要利用形参直接访问实参,则应把形参变量说明为()参数。
A.指针B.引用C.传值D.常值
2.以下说法错误的是()。
A.抽象数据类型具有封装性。
B.抽象数据类型具有信息隐蔽性。
C.使用抽象数据类型的用户可以自己定义对抽象数据类型中数据的各种操作。
D.抽象数据类型的一个特点是使用与实现分离。
3.设有一个nn的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B中()处。
A.(i+3)*i/2B.(i+1)*i/2C.(2n-i+1)*i/2D.(2n-i-1)*i/2
4.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为()。
A.O
(1)B.O(m)
C.O(n)D.O(m+n)
5.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A.front==rearB.front!
=NULL
C.rear!
=NULLD.front==NULL
6.设有一个递归算法如下
intfact(intn){//n大于等于0
if(n<=0)return1;
elsereturnn*fact(n-1);
}
则计算fact(n)需要调用该函数的次数为()次。
A.nB.n+1C.n+2D.n-1
7.在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于()。
A.2h-1B.2h+1C.2h-1D.2h
8.一棵树的广义表表示为a(b,c(e,f(g)),d),当用左子女-右兄弟链表表示时,右指针域非空的结点个数为()。
A1B2C3D4
9.向具有n个结点的、结构均衡的二叉搜索树中插入一个元素的时间复杂度大致为()。
A.O
(1)B.O(log2n)C.O(n)D.O(nlog2n)
10.具有n个顶点的有向无环图最多可包含()条有向边。
A.n-1B.nC.n(n-1)/2D.n(n-1)
11.图的广度优先搜索类似于树的()次序遍历。
A.先根B.中根C.后根D.层次
12.如果将所有中国人按照生日(不考虑年份,只考虑月、日)来排序,那么使用下列排序算法中()算法最快。
A.归并排序B.希尔排序C.快速排序D.基数排序
二、填空题,在横线处填写合适内容(每小题1分,共12分)
1.数据结构的存储结构包括顺序、________、索引和散列等四种。
2.在程序运行过程中可以扩充的数组是__________分配的数组。
这种数组在声明它时需要使用数组指针。
3.在链表中进行插入和操作的效率比在顺序存储结构中进行相同操作的效率高。
4.栈是一种限定在表的一端进行插入和删除的线性表,又被称为___________表。
5.如果一个对象部分地包含自己,或自己定义自己,则称这个对象是_________的对象。
6.一棵树的广义表表示为a(b(c,d(e,f),g(h)),i(j,k(x,y))),结点f的层数为_________。
假定树根结点的层数为0。
7.一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有________子女。
8.向一棵二叉搜索树中插入一个元素时,若元素的值小于根结点的值,则应把它插入到根结点的________上。
9.设图G=(V,E),V={1,2,3,4},E={<1,2>,<1,3>,<2,4>,<3,4>},从顶点1出发,对图G进行广度优先搜索的序列有________种。
10.每次直接或通过基准元素间接比较两个元素,若出现逆序排列就交换它们的位置,这种排序方法叫做__________排序。
11.快速排序在平均情况下的空间复杂度为____________。
12.若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个表项的索引,则一级索引表的长度为________。
三、判断题,在每小题前面打对号表示正确或打叉号表示失败(每小题1分,共10分)
1.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户根据应用需要建立的。
2.顺序表和一维数组一样,都可以按下标随机(或直接)访问。
3.在一个顺序存储的循环队列中,队头指针指向队头元素的后一个位置。
4.用非递归方法实现递归算法时一定要使用递归工作栈。
5.在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行中序遍历和后序遍历,则具有相同的结果。
6.在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。
7.在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树。
8.对于AOE网络,加速任一关键活动都能使整个工程提前完成。
9.直接选择排序是一种稳定的排序方法。
10.闭散列法通常比开散列法时间效率更高。
四、运算题(前2小题,每小题6分,后3小题,每小题8分,共36分)
1.设有一个二维数组A[10][20],按行存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是多少。
A[6][2]的存储字地址:
2.已知一棵二叉树的中序和后序序列如下,求该二叉树的高度(假定空树的高度为-1)和度为2、度为1及度为0的结点个数。
中序序列:
c,b,d,e,a,g,i,h,j,f
后序序列:
c,e,d,b,i,j,h,g,f,a
高度:
度为2的结点数:
度为1的结点数:
度为0的结点数:
3.假定一组记录为(36,75,83,54,12,67,60,40),将按次序把每个结点插入到初始为空的一棵AVL树中,请回答在插入时需进行“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,“不调整”的结点数各是多少?
左单旋转结点个数:
右单旋转结点个数:
先左后右双旋转结点个数:
先右后左双旋转结点个数:
不调整结点个数:
4.已知一个带权图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6};
E={(0,1)19,(0,2)10,(0,3)14,(1,2)6,(1,5)5,(2,3)26,(2,4)15,(3,4)18,
(4,5)6,(4,6)6,(5,6)12};
试根据迪克斯特拉(Dijkstra)算法求出从顶点0到其余各顶点的最短路径,在下面填写对应的路径长度。
顶点:
0123456
0
路径长度:
5.已知一个数据表为{36,25,25*,62,40,53},请写出在进行快速排序的过程中每次划分后数据表的变化。
(0)[362525*624053]
(1)
(2)(3)
五、算法分析题(每小题6分,共18分)
1.指出下面算法的功能并求出其时间复杂度。
voidmatrimult(inta[M][N],intb[N][L],intc[M][L])
{//M、N、L均为全局整型量
inti,j,k;
for(i=0;i for(j=0;j for(i=0;i for(j=0;j for(k=0;k c[i][j]+=a[i][k]*b[k][j]; } 功能为: 时间复杂度为: 2.设有一个求解汉诺塔(Hanoi)的递归算法如下: voidHANOI(intn,intpeg1,intpeg2,intpeg3){ if(n==1)cout< else{ HANOI(n-1,peg1,peg3,peg2); cout< HANOI(n-1,peg2,peg1,peg3); } } 当使用HANOI(3,1,2,3)进行调用时,给出else子句中的cout语句的输出结果。 3.已知二叉搜索树中的结点类型BinTreeNode定义为: structBinTreeNode{ElemTypedata;BinTreeNode*left,*right;}; 其中data为结点值域,left和right分别为指向左、右子女结点的指针域。 参数t指向一棵二叉搜索树,该树的广义表表示为: 25(10(5,16(12)),40(32(,38)))。 根据下面算法按标号把答案填写到算法后面相应标号的位置。 执行LN(pt,40)调用后返回的值为__ (1)_____。 执行LN(pt,38)调用后返回的值为__ (2)_____。 执行LN(pt,5)调用后返回的值为___(3)_____。 intLN(BinTreeNode*t,ElemTypeX) { if(t==NULL)return0; elseif(t->data==X)return1; elseif(t->data>X) return1+LN(t->left,X); else return1+LN(t->right,X); } (1) (2)(3) 六、算法设计题(每小题6分,共12分) 1.试编写一个函数,在一个顺序表A中查找出具有最大值和最小值的整数。 函数的原型如下所示,原型的参数表中给出顺序表对象为A,通过算法执行,从参数表中的引用参数Max中得到表中的最大整数,Min中得到表中的最小整数。 注意,函数中可使用顺序表的如下两个公有函数: intLength();求表的长度; intgetData(intk);提取第k个元素的值。 #include“SeqList.h” template voidFindMaxMin(SeqList 2.已知二叉树中的结点类型BinTreeNode定义为: structBinTreeNode{chardata;BinTreeNode*left,*right;}; 其中data为结点值域,left和right分别为指向左、右子女结点的指针域,根据下面函数声明编写出判断两棵二叉树是否相等的算法,若相等则返回1否则返回0。 算法中参数T1和T2为分别指向这两棵二叉树根结点的指针。 当两棵树的结构完全相同并且对应结点的值也相同时才被认为相等。 intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2); 计算机科学与技术专业数据结构试题 (2) 一、单项选择题,在括号内填写所选择的标号(每小题1分,共12分) 1.B2.C3.C4.C5.D6.B 7.D8.C9.B10.C11.D12.D 二、填空题,在横线处填写合适内容(每小题1分,共12分) 1.链接2.动态3.删除4.后出先进 5.递归6.37.右8.左子树 9.210.交换11.O(log2n)12.500 三、判断题,在每小题前面打对号或打叉号(每小题1分,共10分) 1.对2.对3.错4.错5.对 6.对7.错8.错9.错10.错. 四、运算题(前2小题,每小题6分,后3小题,每小题8分,共36分) 1.A[6][2]的存储字地址: 322//6分 答案说明: 按行存储时,计算A[i][j]地址的公式为 LOC(i,j)=LOC(0,0)+(i*n+j)*d 其中首地址LOC(0,0)=200,每个数组元素的存储占用数d=1,二维数组的列数n=20,根据题意,元素A[6][2]的存储地址为 LOC(6,2)=200+(6*20+2)*1=322 2. 高度: 4//2分 度为2的结点数: 3//2分 度为1的结点数: 3//1分 度为0的结点数: 4//1分 3. 左单旋转结点个数: 1//2分 右单旋转结点个数: 0//2分 先左后右双旋转结点个数: 1//2分 先右后左双旋转结点个数: 0//1分 不调整结点个数: 6//1分 4.错1个数值扣2分,最多扣全部8分。 顶点: 0123456 0 16 10 14 25 21 31 路径长度: 5. (0)[362525*624053] (1)[25*25]36[624053]//3分 (2)25*2536[5340]62//3分 (3)25*2536405362//2分 五、算法分析题(每小题6分,共18分) 1. 功能为: 矩阵相乘,即a[M][N]×b[N][L]→c[M][L]。 //3分 时间复杂性为: O(M×N×L)。 //3分 2. 1→2//2分 1→3//2分 2→3//2分 3. (1)2//2分 (2)4//2分 (3)3//2分 六、算法设计题(每小题6,共12分) 1.请根据完整程度酌情给分 #include“SeqList.h” template voidFindMaxMin(SeqList Max=Min=A.getData(0); for(inti=1;i if(A.getData(i)>Max)Max=A.getData(i); elseif(A.getData(i) } } 2.渐进给分,如注释。 intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2) { //若两棵树均为空则返回1表示相等 if(T1==NULL&&T2==NULL)return1;//1分 //若一棵为空一棵不为空则返回0表示不等 elseif(T1==NULL||T2==NULL)return0;//2分 //若根结点值相等并且左、右子树对应相等则两棵树相等 elseif(T1->data==T2->data&&BTreeEqual(T1->left,T2->left)&& BTreeEqual(T1->right,T2->right)) return1;//5分 //若根结点值不等或左、右子树对应不等则两棵树不等 else return0;//6分 } 另一个参考答案: intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2) { //若两棵树均为空或实际上是同一棵树时返回1表示相等 if(T1==T2)return1;//1分 //若一棵为空一棵不为空则返回0表示不等 if(T1==NULL||T2==NULL)return0;//2分 //若根结点值不等返回0表示不等 if(T1->data! =T2->data)return0;//3分 //若根结点值相等则两棵树是否相等取决于它们的左、右子树是否对应相等 returnBTreeEqual(T1->left,T2->left)&&BTreeEqual(T1->right,T2->right); //6分 } 中央电大计算机科学与技术专业 数据结构(本科)试卷7 2003年7月已考 一、选择题(每小题1分,共10分) 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A.O(n)B.O(n/2)C.O (1)D.O(n2) 2.带头结点的单链表first为空的判定条件是: A.first==NULL;B.first->link==NULL; C.first->link==first;D.first! =NULL; 3.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。 A.n-2B.n-1C.nD.n+1 4.在系统实现递归调用时需利用递归工作记录保存实际参数的值。 在传值参数情形,需为对应形式参数分配空间,以存放实际参数的副本;在引用参数情形,需保存实际参数的(),在被调用程序中可直接操纵实际参数。 A.空间B.副本C.返回地址D.地址 5.在一棵树中,()没有前驱结点。 A.分支结点B.叶结点C.树根结点D.空结点 6.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。 A.2B.1C.0D.–1 7.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。 A.20B.18C.25D.22 8.在有向图中每个顶点的度等于该顶点的()。 A.入度B.出度 C.入度与出度之和D.入度与出度之差 9.在基于排序码比较的排序算法中,()算法的最坏情况下的时间复杂度不高于O(nlog2n)。 A.起泡排序B.希尔排序C.归并排序D.快速排序 10.当α的值较小时,散列存储通常比其他存储方式具有()的查找速度。 A.较慢B.较快C.相同 二、填空题(每小题1分,共10分) 1.二维数组是一种非线性结构,其中的每一个数组元素最多有_________个直接前驱(或直接后继)。 2.将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中,A[0][0]存放于B[0]中。 对于任意给定数组元素B[K],它应是A中第_________行的元素。 3.链表对于数据元素的插入和删除不需移动结点,只需改变相关结点的________域的值。 4.在一个链式栈中,若栈顶指针等于NULL则为________。 5.主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用,它们都需要利用栈保存调用后的_________地址。 6.在一棵树中,______结点没有后继结点。 7.一棵树的广义表表示为a(b(c,d(e,f),g(h)),i(j,k(x,y))),结点f的层数为______。 假定根结点的层数为0。 8.在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差的绝对值不超过________。 9.n(n﹥0)个顶点的无向图最多有________条边,最少有________条边。 10.在索引存储中,若一个索引项对应数据对象表中的一个表项(记录),则称此索引为________索引,若对应数据对象表中的若干个表项,则称此索引为________索引。 三、判断题(每小题1分,共10分) 1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。 2.链式存储在插入和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。 3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。 4.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。 5.一个广义表的表尾总是一个广义表。 6.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。 7.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。 8.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。 9.直接选择排序是一种稳定的排序方法。 10.闭散列法通常比开散列法时间效率更高。 四、运算题(每小题8分,共40分) 1.设有一个1010的对称矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。 2.这是一个统计单链表中结点的值等于给定值x的结点数的算法,其中while循环有错,请重新编写出正确的while循环。 intcount(ListNode*Ha,ElemTypex) {//Ha为不带头结点的单链表的头指针 intn=0; while(Ha->link! =NULL){ Ha=Ha->link; if(Ha->data==x)n++; } returnn; } 3.已知一棵二叉树的前序和中序序列,求该二叉树的后序序列。 前序序列: A,B,C,D,E,F,G,H,I,J 中序序列: C,B,A,E,F,D,I,H,J,G 后序序列: 4.已知一个有序表(15,26,34,39,45,56,58,63,74,76,83,94)顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34,56,58,63,94时的比较次数。 3456586394 元素值 比较次数 5.设散列表为HT[17],待插入关键码序列为{Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec},散列函数为H(key)=i2,其中,i是关键码第一个字母在字母表中的序号。 现采用线性探查法解决冲突。 字母 A B C D E F G H I J K L M 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 下载