耿国华数据结构附录A样卷习题答案及B卷习题答案_第1页
耿国华数据结构附录A样卷习题答案及B卷习题答案_第2页
耿国华数据结构附录A样卷习题答案及B卷习题答案_第3页
耿国华数据结构附录A样卷习题答案及B卷习题答案_第4页
耿国华数据结构附录A样卷习题答案及B卷习题答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

数据结构附录A样卷一一、判断题:(10分)正确在括号内打J,错误打X(X)1.在单链表中,头结点是必不可少的。(X)2.如果一个二叉树中没有度为1的结点,则必为满二叉树。(J)3.循环链表的结点结构与单链表的结点结构完全相同,只是结点间的连接方式不同。(X)4.顺序存储结构只能用来存放线性结构;链式存储结构只能用来存放非线性结构。(V)5.在一个大根堆中,最小元素不一定在最后。(V)6.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和。(V)7.在采用线性探测法处理冲突的散列表中,所有同义词在表中相邻。(V)8.内部排序是指排序过程在内存中进行的排序。(X)9.拓扑排序是指结点的值是有序排列。(X)10.AOE网所表示的工程至少所需的时间等于从源点到汇点的最长路径的长度。二、选择题(30分,每题1.5分).有一个含头结点的单链表,头指针为head, 则判断其是否为空的条件为:BA.head==NULLB.Head->next==NULLC.head->next==headD.Head!=NULL.非空的循环单链表head的尾指针p满足C。A.p->next=NULLB.p==NULL C.P->next==head D.p==head.链表不具有的特点是一A_。A、可随机访问任一个元素 8、插入删除不需要移动元素C、不必事先估计存储空间 D、所需空间与线性表的长度成正比.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用—D_存储方式最节省运算时间。A、单链表 8、双链表 C、单循环链表 D、带头结点的双循环链表.若线性表最常用的操作是存取第i个元素及其前驱的值,则采用以存储方式节省时间。A、单链表 8、双链表 C、单循环链表 D、顺序表.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能的是」_。A、A,B,C,D B、D,C,B,AC、A,C,D,B D、D,A,B,C.一个队列的入队序列是1,2,3,4,则队列的输出序列是B。A、4,3,2,1B、1,2,3,4 C、1,4,3,2 D、3,2,4,1.设循环队列中数组的下标范围是1~n,其头尾指针分别为f,r,若队列中元素个数为 D 。A、r-f B、r-f+1 C、(r-f+1)modnD、(r-f+n)modn.串是D。A、不少于一个字母的序列 B、任意个字母的序列C、不少于一个字符的序列 D、有限个字符的序列TOC\o"1-5"\h\z.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续内存单元中,则A[5,5]的地址是 A。A、1140 B、1145 C、1120 D、1125.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号为49的结点的左孩子的编号为」 。A、98 B、99 C、50 D、48.对二叉树从1开始编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用―C 实现编号。A、先序遍历 B、中序遍历C、后序遍历 D、从根开始进行层次遍历13.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是的二叉树。A、空或只有一个结点 B、高度等于其结点数C、任一结点无左孩子 D、任一结点无右孩子.在有n个叶子结点的哈夫曼树中,其结点总数为―C 。A、不确定 B、2n C、2n+1 D、2n-1.一个有n个顶点的无向图最多有 C条边。TOC\o"1-5"\h\zA、n B、n(n-1) C、n(n-1)/2 D、2n.任何一个无向连通图的最小生成树 B。A、只有一棵B、有一棵或多棵C、一定有多棵 D、可能不存在.一组记录的关键字为(46,79,56,38,40,84),利用快速排序的方法,以第一个记录为基准得到的一次划分结果为 C 。A、38,40,46,56,79,84B、40,38,46,79,56,84C、40,38,46,56,79,84 D、40,38,46,84,56,79.已知数据表A中每个元素距其最终位置不远,则采用_B—排序算法最节省时间。A、堆排序 8、插入排序 C、快速排序 口、直接选择排序.下列排序算法中,C_算法可能会出现下面情况:初始数据有序时,花费时间反而最多。A、堆排序 B、冒泡排序 C、快速排序 D、SHELL排序.对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为 B的结点开始。A、100 B、60 C、12 D、15三、填空题(40分)1在顺序表(即顺序存储结构的线性表)中插入一个元素,需要平均动表长的一半个元素.2.快速排序的最坏情况,其待排序的初始排列是排好序列.一个栈的输入序列为123,写出不可能是栈的输出序列312—。.N个结点的二叉树,采用二叉链表存放,空链域的个数为N+1..要在一个单链表中p所指结点之后插入$所指结点时,应执行S->next=P->next和P->next=S的操作..Dijkstra算法是按路径递增的次序产生一点到其余各顶点最短路径的算法..在N个结点完全二叉树中,其深度是Log⑵(N)..对二叉排序树进行中序遍历,可得到结点的有序排列..设一哈希表表长M为100,用除留余数法构造哈希函数,即H(K)=KMODP(P〈二M〉,为使函数具有较好性能,P应选 97 .单链表与多重链表的区别是链域个数不同.深度为6(根层次为1)的二叉树至多有 63 个结点。.已知二维数组人[0..20][0..10]采用行序为主方式存储,每个元素占4个存储单元,并且A[0][0]的存储地址是1016,则A[10][5]的存储地址是 1476 .循环单链表La中,指针P所指结点为表尾结点的条件是 P->next=head.在查找方法中,平均查找长度与结点个数无关的查找方法是散列查找 。.队列的特性是 先进先出.具有3个结点的二叉树有5种.已知一棵二叉树的前序序列为ABDFCE,中序序列为DFBACE,后序序列为FDBECA.已知一个图的邻接矩阵表示,要删除所有从第i个结点出发的边,在邻接矩阵运算是将矩阵第i行全部置0四、构造题:(30分).已知关键字序列为:(75,33,52,41,12,88,66,2)哈希表长为10,哈希函数为:H(k)=KMOD7,解决冲突用线性探测再散列法,构造哈希表,求等概率下查找成功的平均查找长度。答:key7533524112886627计算函数值Key%755365436比较次数Cmp12124175计算函数值(1)哈希表(4分,每对1个0.5分)index0123456789key2752887533411266ASL=(1+2+1+2+4+1+7+5)/8=23/8.已知无向图如图1所示,(1)给出图的邻接表。(2)从A开始,给出一棵广度优先生成树。所IL

.给定叶结点权值:(1,3,5,6,7,8),构造哈夫曼树,并计算其带权路径长度WPL=1*4+3*4+5*3+6*2+7*2+8*2=73.从空树开始,逐个读入并插入下列关键字,构造一棵二叉排序树:5.对长度为8的有序表,给出折半查找的判定树,给出等概率情况下的平均查找长度。ASL=(1+2*2+4*3+1*4)/8=21/8=2.626.已知一棵树如图2所示,要求将该树转化为二叉树。

A五、算法设计题(40分)A[算法题可用类PASCAL或类C语言,每题20分].已知一棵二叉树采用二叉链表存放,写一算法,要求统计出二叉树中叶子结点个数并输出二叉树中非终端结点(输出无顺序要求)。structBtree(intdata;structBtree(intdata;structBtree*left;structBtree*right;);intcount(Btree*T)(Btree*st[50];inttop=-1;Btree*p;intsum=0;if(T!=NULL)(top++;st[top]=T;while(top>-1)(if(p->right!=NULL)(top++;st[top]=p->right;)if(p->left!=NULL)(top++;st[top]=p->left;)if(p->left==NULL&&p->right==NULL)(sum++;))returnsum;))p=st[top];.编写算法,判断带头结点的双循环链表L是否对称。对称是指:设各元素值/%,...,%则有a「an_i+i即指:a=a,a=a结点结构为2 n-1……priordatanext数据结构附录B样卷二一、简答题(15分,每小题3分).简要说明算法与程序的区别。算法是解决特定问题的操作序列,可以用多种方式描述。程序是算法在计算机中的实现,与具体的计算机语言有关。.在哈希表中,发生冲突的可能性与哪些因素有关?为什么?主要与哈希函数、装填因子a有关。如果用哈希函数计算的地址分布均匀,则冲突的可能性较小,如果装填因子a较小,则哈希表较稀疏,发生冲突的可能性较小。.说明在图的遍历中,设置访问标志数组的作用。图中结点可能有多个前驱,设置访问标志数组主要是为了避免重复访问同一个结点。.说明以下三个概念的关系:头指针,头结点,首元素结点。头指针指向头结点,头结点的后继域指向首元素结点。.在一般的顺序队列中,什么是假溢出?怎样解决假溢出问题?当队尾到达数组最后一个单元时,就认为队满,但此时数组前面可能还有空单元,因此叫假溢出。解决的方法是采用循环队列,即令最后一个单元的后继是第一个单元。二、判断题(10分,每小题1分)正确在括号内打5,错误打X(V)(1)广义表(((a),b),c)的表头是((a),b),表尾是(c)。(2)在哈夫曼树中,权值最小的结点离根结点最近。(3)基数排序是高位优先排序法。(V)(4)在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1。(5)在单链表中,给定任一结点的地址p,则可用下述语句将新结点$插入结点p的后面:p->next=s;s->next=p->next;(V)(6)抽象数据类型(&丁)包括定义和实现两方面,其中定义是独立于实现的,定义仅给出一个ADT的逻辑特性,不必考虑如何在计算机中实现。(7)数组元素的下标值越大,存取时间越长。(V)(8)用邻接矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。(x)(9)拓扑排序是按AOE网中每个结点事件的最早发生时间对结点进行排序。(10)长度为1的串等价于一个字符型常量。三、单项选择题(10分,每小题1分).排序时扫描待排序记录序列,顺次比较相邻的两个元素的大小,逆序时就交换位置。这是哪种排序方法的基本思想?DA、堆排序 8、直接插入排序 C、快速排序 D、冒泡排序.已知一个有向图的邻接矩阵表示,要删除所有从第i个结点发出的边,应该:BA)将邻接矩阵的第i行删除 B)将邻接矩阵的第i行元素全部置为0C)将邻接矩阵的第i列删除 D)将邻接矩阵的第i列元素全部置为0.有一个含头结点的双向循环链表,头指针为head,则其为空的条件是:CA.head->priro==NULL B.head->next==NULLC.head->next==head D.head->next->priro==NULL.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用折半法查找关键码值11,所需的关键码比较次数为:CA)2 B)3 C)4 D)5.以下哪一个不是队列的基本运算?BA)从队尾插入一个新元素 B)从队列中删除第i个元素C)判断一个队列是否为空 D)读取队头元素的值.在长度为n的顺序表的第i个位置上插入一个元素(1WiWn+1),元素的移动次数为:A)n,i+T| B)n-i C)i D)i-1.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为:CA)顺序表 B)用头指针表示的循环单链表C)用尾指针表示的循环单链表 D)单链表.对包含n个元素的哈希表进行查找,平均查找长度为:DA)O(log2n)B)O(n)C)O(nlog2n)D)不直接依赖于n.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号最大的非叶结点的编号为:CA、48 B、49 C、50 D、51.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,则其左子树中结点数目为:C

A)3 B)2 C)4 D)5四、填空题(10分,每空1分)1.填空完成下面一趟快速排序算法:intQKPass(RecordTyper[],intlow,inthigh){x=r[low];while(low<high){while(low<high&&r[high].key>=x.key)high—;if(low<high){r[low]=r[high];low++;}while(low<high&&r[low].key<x.key)low++;if(low<high){r[high]=r[low]; high一;}}r[low]=x;returnlow;}.假设用循环单链表实现队列,若队列非空,且队尾指针为R,则将新结点5加入队列时,需执行下面语句: S->next=R->next:R->next=S;R=S;.通常是以算法执行所耗费的时间和所占用的空间来判断一个算法的优劣。.已知一个3行、4列的二维数组A(各维下标均从1开始),如果按“以列为主”的顺序存储,则排在第8个位置的元素是: A[2,3].高度为h的完全二叉树最少有 2h-1个结点。五、构造题(20分)1.(4分)已知数据结构DS的定义如下,请给出其逻辑结构图示。DS=(D,R)D={a,b,c,d,e,f,g}R={T}T={<a, b>,<a, g>,<b,g>, <c,b>,<d, c>,<d, f>,2.(6分)对以下关键字序列建立哈希表:(SUN,MON,TUE,WED,THU,FRI,SAT),2.(6分)对以下关键字序列建立哈希表:(SUN,MON,TUE,WED,THU,FRI,SAT),哈希函数为口值)=(K中最后一个字母在字母表中的序号)MOD7。用线性探测法处理冲突,要求构造一个装填因子为0.7的哈希表,并计算出在等概率情况下查找成功的平均查找长度。解:装填因子=元素个数/表长,得哈希表长度=7/0.7=10各关键字第一个字母的序号分别为:19(S),13(M),20(T),23(W),6(F)keySUNMONTUEWEDTHUFRISAT7计算函数值Key%75662665比较次数Cmp1121346index0123456789keySATWEDSUNMONTUETHUFRIASL=(6+1+1+1+2+3+4)18/73.(6分)将关键字序列(3,26,12,61,38,40,97,75,53,87)调整为大根堆。4.(4分)已知权值集合为:{5,7,2,3,6,9},要求给出哈夫曼树,并计算其带权路径长度WPL。WPL=2X(9+6+7)+3X5+4X(2+3)=79六、算法分析题(10分)阅读下面程序,并回答有关问题。其中BSTree为用二叉链表表示的二叉排序树类型。简要说明程序功能。(5分)n个结点的满二叉树的深度h是多少?(3分)假设二叉排序树*bst是有n个结点的满二叉树,给出算法的时间复杂度。(2分)intProc(BSTree*bst,KeyTypeK){BSTreef,q,s;s=(BSTree)malloc(sizeof(BSTNode));s->key=K;s->Ichild=NULL;s->rchild=NULL;if(*bst

温馨提示

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

评论

0/150

提交评论