




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2010年1月一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1若一个算法的时间复杂度用T(n)表示,其中n的含义是( A )A问题规模 B语句条数 C循环层数 D函数数量2具有线性结构的数据结构是( C )A树 B图 C栈和队列 D广义表线性结构有:顺序表、栈和队列、串3将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为( C )AO(1) BO(m) CO(n) DO(m+n)4在带头结点的双向循环链表中插入一个新结点,需要修改的指针域数量是( D )A2个 B3个 C4个 D6个P28中void DInsertBefore(DListNode *p,DataType x)/在带头结点的双链表中,将值为x的新结点插入结点*p之前,设pNULLDListNode *s=malloc(sizeof(ListNode); s-data=x; s-prior=p-prior; s-next=p; p-prior-next=s; p-prior=s; 5假设以数组A60存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( D )A3 B37 C50 D97辅导书P22中:对于循环向量中的循环队列,写出通过队头队尾指针表示的队列长度公式。(front指向实际队头,rear指向实际队尾的下一元素位置。)当rearfront时,队列长度L=rear-front;当rearfront时,L=m+(rear-front)。这两种情况可统一为L=(m+(rear-front)%m,这里m为向量的大小。本题中m=606若栈采用链式存储结构,则下列说法中正确的是( B ) A需要判断栈满且需要判断栈空 B不需要判断栈满但需要判断栈空 C需要判断栈满但不需要判断栈空 D不需要判断栈满也不需要判断栈空P36中:因为链栈中的结点是动态分配的,可以不考虑上溢,所以无需定义stackFull运算。7若串str=”Software”,其子串的数目是( D ) A8 B9 C36 D37P51中: 任意个连续字符组成的子序列称为该串的子串。8设有一个10阶的下三角矩阵A,采用行优先压缩存储方式,all为第一个元素,其存储地址为1000,每个元素占一个地址单元,则a85的地址为 ( C )A1012 B1017 C1032 D1039P61中:在n阶方阵A这个下三角矩阵中,第i(i从0开始)行(0in)有i+1个元素,元素总数为:n(n+1)/2,并将元素放在一个向量sa0. n(n+1)/2-1中。若ij,则aij在左下三角矩阵中,sak与aij的对应关系是k=i(i+1)/2+j。若iK,则由表的有序性可知Rmid.n.keys均大于K,因此若表中存在关键字等于K的结点,则该结点必定是在位置mid左边的子表R1.mid-1中,故新的查找区间是左子表R1.mid-1;类似地,若Rmid.keydataS-top; 19在串匹配中,一般将主串称为目标串,将子串称为_模式串_。P5520已知广义表C=(a(b,c),d),则:tail(head(tail(C)= _( )_。P66中:若广义表LS非空(n1)(通常用圆括号将广义表括起来,用逗号分割其中的元素。用大写字母表示广义表,用小写字母表示原子。),则a1是LS的表头,其余元素组成的表称为LS的表尾。长度:元素的个数深度:表展开后所含括号的层数(从最里面往最外面数)21用6个权值分别为6、13、18、30、7和16的结点构造一棵哈夫曼(Huffman)树,该树的带权路径长度为_231_。 P90中结点的带权路径长度,是该结点到树根之间的路径长度与结点上权的乘积。WPL=301+182+163+134+65+75 =30+36+48+52+30+35 =23122已知有向图如下所示,其中顶点A到顶点C的最短路径长度是_35_。P90中:树的路径长度是从树根到树中每一结点的路径长度之和。显然,在结点数目相同的二叉树中,完全二叉树的路径长度最短。P122中:源点s到终点v的最短路径长度简称为最短距离。P73中:完全二叉树(Complete Binary Tree,见图6.7的b)若一颗二叉树至多只有最下面的两层上结点的度数(P70中,一个结点拥有的子树数称为该结点的度Degree。一颗树的度是指该树中的结点的最大度数。度为零的结点称为叶子Leaf或终端结点。)可以小于2,而且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。23对序列55,46,13,05,94,17,42进行基数排序,第一趟排序后的结果是42,13,94,55,05,46,17。P162中:基数排序的基本思想是:从低位到高位依次对Kj(j=d-1,d-2,d-3,0)进行箱排序。在d趟箱排序中,所需的箱子数就是基数rd。如被排序的记录关键字Ki取值范围是0-99间整数的例子,就是一个基数radix为10,d为2的基数排序。24高度为3的3阶B-树最少的关键字总数是_7_。辅导书P147中(最多关键字总数的解答)一颗高度为h的k阶B-树中最多可容纳多少个关键字?解 要使高为h的k阶B-树容纳最多的关键字,则每个结点中的关键自数据就必须达到最大值k-1.因此这时的B-树实际上可看成是满k叉树。不妨设根的层数为1,则第1层只有1个根结点,第2层上共有k个结点,第3层上共有k2个结点,第h层上共有kh-1个结点,树中结点总数为: 由每个结点可容纳k-1关键字可知,树中可容纳的关键字总数为:n=(k-1)m=(k-1)=kh-1以h=3,k=101为例,相应的B-树最多可容纳1013-1=100+10100+1020100=1030300个关键字,树中结点总数为(1013-1)/100=1+101+10201=10303。示意图如下:第1层:1个结点 100个关键字第2层:101个结点 101100=10100个关键字第3层:1012=10201个结点 10201100=1020100个关键字P182中(最少关键字总数的解答)一颗m(m3)阶的B-树,每个非根结点中所包含的关键字个数j满足: m/2 -1jm-1。即每个非根结点至少应有 m/2 -1个关键字,至多有m-1个关键字。(注: m/2 是指不小于(即大于等于)m/2的最小整数。)一颗高度为h的m阶B-树中最少可容纳的关键字总数为: m/2 h-1,最少可容纳的结点总数为 m/2 h-1 m/2 -1以h=3,m=3为例,相应的B-树最少可容纳的关键字总数为 m/2 h-1=23-1=7个。示意图如下:第1层:1个结点 m/2 -1=1个关键字第2层:2个结点 2个关键字第3层:22=4个结点 4个关键字25VSAM通常作为大型索引顺序文件的标准组织,其动态索引结构采用的是_B+树_。P214三、解答题(本大题共4小题,每小题5分,共20分)26假设二叉树的RNL遍历算法定义如下: 若二叉树非空,则依次执行如下操作: (1)遍历右子树; (2)访问根节点; (3)遍历左子树。已知一棵二叉树如图所示,请给出其RNL遍历的结果序列。GCFABDP77页图6.11中的中序序列LNR、前序序列NLR、后序序列LRN27已知一个无向图G=(V,E),其中V=A,B,C,D,E,F,邻接矩阵表示如下所示。请回答下列问题:(1)请画出对应的图G。P103中的图7.70 1 2 3 4 5A B C D E F 0 A 0 1 0 1 0 01 B 1 0 1 1 1 02 C 0 1 0 0 0 1 3 D 1 1 0 0 1 04 E 0 1 0 1 0 15 F 0 0 1 0 1 0 (2)画出图G的邻接表存储结构。P105中图7.828已知一组待排记录的关键字序列为(16,12,18,60,15,36,14,18,25,85),用堆排序方法建小根堆,请给出初始建堆后的序列。P154中,注:n=10,从第n/2(1i )个结点起进行调整。若i=5,则与i=10或i=11进行互换;即i与2i或2i+1中的关键字进行互换。P152中,堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,大根堆排序结果是递增有序的,小根堆排序结果是递减有序的。29已知一棵二叉排序树如图所示。 请回答下列问题:(1)画出插入元素23后的树结构;(2)请画出在原图中删除元素57后的树结构。P174中二叉排序树(Binary Sort Tree)性质(BST性质):若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左右子树本身又各是一棵二叉排序树。二叉排序树BST的特点(1) 二叉排序树中任一结点x,其左(右)子树中任一结点y(若存在)的关键字必小(大)于x的关键字。(2) 二叉排序树中,各结点关键字(我理解是中间节点,即N)是惟一的。还有另外一个重要性质:按中序遍历LNR该树所得到的中序序列是一个递增有序序列,RNL则得到一个递减有序序列。四、算法阅读题(本大题共4小题,每小题5分,共20分)30已知下列程序,Ls指向带头结点的单链表。 Typedef struct node DataType data; struct node * next; * LinkList; void f30( LinkList Ls ) LinkList p, q; q = Ls-next; if ( q & q-next ) Ls-next = q-next; p=q while ( p-next ) p = p-next; p-next = q; q-next = NULL;请回答下列问题:(1)当Ls指向的链表如下图所示,请画出执行本函数之后的链表的结果。(2)请简述算法的功能。删除单链表的中间结点和尾结点。31已知字符串处理函数f31程序如下。 int f31(char*strl,char*str2) while(*strl=*str2&(*strl!=0) strl+; str2+; return(*strl-*str2 ? l0); 请回答下列问题:(1) 若调用语句是f31(”abcde”,”abcdf”),则函数的返回值是什么?答:A的ASCII 065A的ASCII 097由于e 对应的ASCII码是101,f对应的ASCII码是102,则e f=101102=-1再按照条件表达式的形式为逻辑表达式?表达式1:表达式2若逻辑表达式的值为非零,则条件表达式的值等于表达式1的值;若逻辑表达式的值为零,则条件表达式的值等于表达式2的值。则函数的返回值是1。若调用语句是 f31(”abcde”,”abcde”),则函数的返回值是什么?答:由于字符串结束标识0对应的ASCII码是0,则*strl-*str2=0再按照条件表达式的形式为逻辑表达式?表达式1:表达式2若逻辑表达式的值为非零,则条件表达式的值等于表达式1的值;若逻辑表达式的值为零,则条件表达式的值等于表达式2的值。则函数的返回值是0。 (2)简述该函数的功能。答:如果两个字符串结点*strl和*strl中的字符相等,且字符串结点*strl中的字符不等于字符串结束标识0,则两个字符串结点*strl和*strl中的字符指针自加运算。如果条件不满足,则字符串结点*strl和*strl中的字符相减。若逻辑表达式的值为非零,则条件表达式的值等于1;若逻辑表达式的值为零,则条件表达式的值等于0。32数组A中存储有n个整数,请阅读下列程序。 void f32(intA,int n) int i,j,k,x; k=n-l; while(k0) i=k; k=0; for(j=O;jAj+1) x=Aj; Aj=Aj+l; Aj+1=x; k=j; end of if end of while return; 请回答下列问题:(1)当A=10,8,2,4,6,7时,执行f32(A,6)后,数组A中存储的结果是什么?答:数组A中存储的结果是10。(2)说明该算法的功能。答:数组A中存储有n个整数,当k=n-1时,则第k个向量是最后一个整数。当k0时,即数组A非空时,设i=k,k=0,如果j=0,且ji(即j小于k)时,j自加(即数组下标自加);同时比较第j个整数和第j+1个整数。如果第j个整数大于第j+1个整数,则通过语句x=Aj;Aj=Aj+l;Aj+1=x;进行交换,同时令k=j。如果j大于等于i(即j大于等于k)时,则结束执行if语句和while语句,并返回。33下面程序实现二分查找算法。 Typedef struct KeyType key; InfoType otherinfo; SeqListN+1; int BinSearch(SeqList R, int n,KeyType K) int low=1,high=n; while( (1)lowK) high=mid-1; else (3)low=mid+1 ; return O; BinSearch 请在空白处填写适当内容,使该程序功能完整。 (1) lowlchild)+ SumNodes(T-rchild)+1;辅导书P66 P76第四题的第2小题中问:写一递归算法求二叉树中度为2的结点总数答:二叉树中度2度结点数的递归定义如下:当T为空或T是叶子时,以T为根的二叉树的2度结点数为0;当T是2度结点时,以T为根的二叉树的2度结点数为T的左右子树中2度结点数之和再加上T结点本身;当T是1度结点时,以T为根的二叉树中2度结点数为T的左右子树中2度结点数之和。算法如下:int D2Nodes(BinTree T)if(! T! T-lchild & ! T-rchild)/逻辑运算符的执行优先次序是:!非-&与-或,即T为空或T是叶子return 0;if(T-lchild & T-rchild)/T是2度结点return 1+D2Nodes(T-lchild)+D2Nodes(T-rchild);else /T是1度结点return D2Nodes(T-lchild)+D2Nodes(T-rchild);2010年10月一、单项选择题(本大题共15小题,每小题2分,共30分)1数据的四种存储结构是(A)A.顺序存储结构、链接存储结构、索引存储结构和散列存储结构B.线性存储结构、非线性存储结构、树型存储结构和图型存储结构C.集合存储结构、一对一存储结构、一对多存储结构和多对多存储结构D.顺序存储结构、树型存储结构、图型存储结构和散列存储结构2若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少,下列选项中,应选择的存储结构是(C)A.无头结点的单向链表 B.带头结点的单向链表 C.带头结点的双循环链表D.带头结点的单循环链表3若带头结点的单链表的头指针为head,则判断链表是否为空的条件是(B)A.head=NULL B.head-next=NULL C.head!=NULL D.head-next!=head4若元素的入栈顺序为1,2,3.,n,如果第2个出栈的元素是n,则输出的第i(1=i=n)个元素是(D)A.n-i B.n-i+l C.n-i+2 D.无法确定5串匹配算法的本质是(C)A.串复制 B.串比较 C.子串定位 D.子串链接6设有一个10阶的对称矩阵A,采用行优先压缩存储方式,a11为第一个元素,其存储地址为1,每个元素占一个字节空间,则a85的地址为(C)A.13 B.18 C.33D.407若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是(B)A.树中没有度为2的结点 B.树中只有一个根结点 C.树中非叶结点均只有左子树D.树中非叶结点均只有右子树8若根结点的层数为1,则具有n个结点的二叉树的最大高度是(A)A.n B. C.+1 D.n/29在图G中求两个结点之间的最短路径可以采用的算法是(A)A.迪杰斯特拉(Dijkstra)算法 B.克鲁斯卡尔(Kruskal)算法 C.普里姆(Prim)算法D.广度优先遍历(BFS)算法10下图G=(V,E)是一个带权连通图,G的最小生成树的权为(D)A.15B.16C.17D.1811在下图中,从顶点1出发进行深度优先遍历可得到的序列是(B)A.1 2 3 4 5 6 7B.1 4 2 6 3 7 5C.1 4 2 5 3 6 7D.1 2 4 6 5 3 712如果在排序过程中不改变关键字相同元素的相对位置,则认为该排序方法是(B)A.不稳定的 B.稳定的 C.基于交换的 D.基于选择的13设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解决冲突,散列地址为1的链中记录个数为(C)A.1 B.2 C.3D.414已知二叉树结点关键字类型为字符,下列二叉树中符合二叉排序树性质的是(D)15若需高效地查询多关键字文件,可以采用的文件组织方式为(D)A.顺序文件 B.索引文件 C.散列文件 D.倒排文件二、填空题(本大题共10小题,每小题2分,共20分)16下面程序段的时间复杂度为(O(n))。sum=1;for(i=0;sumn;i+)sum+=1;17已知链表结点定义如下:typedef struct nodechar data16;struct node *next; LinkStrNode;如果每个字符占1个字节,指针占4个字节,则该链表的存储密度是(0.8)。18使用一个100个元素的数组存储循环队列,如果采取少用一个元素空间的方法来区别循环队列的队空和队满,约定队头指针front等于队尾指针rear时表示队空。若为front=8,rear=7,则队列中的元素个数为(99)。193个结点可以组成(5)种不同树型的二叉树。20用5个权值3, 2,4,5,1构造的哈夫曼(Huffman)树的带权路径长度是(33)。21若无向图G中有n个顶点m条边,采用邻接矩阵存储,则该矩阵中非0元素的个数为(2m)。22影响排序效率的两个因素是关键字的(比较)次数和记录的移动次数。23对任m阶的B树,每个结点中最多包含(m-1)个关键字。24若两个关键字通过散列函数映射到同一个散列地址,这种现象称为(冲突)。25如果要为文件中的每个记录建立一个索引项,则这样建立的索引表称为(稠密索引)。三、解答题(本大题共4小题,每小题5分,共20分)26要在0.n-l的向量空间中建立两个栈stackl和stack2,请回答:(1)应该如何设计这两个栈才能充分利用整个向量空间?(2)若stackl的栈顶指针为topl,stack2的栈顶指针为top2,如果需要充分利用整个向量空间,则:栈stackl空的条件是:();栈stack2空的条件是:();栈stackl和栈stack2满的条件是:()。答:(1)采用双向栈的形式,stack1的栈底设置在下标为0的元素上,stack2的栈底设置在下标为n-1的元素上。(2)top1=-1,top2=n,top1-1=top2 12 / 1227已知广义表如下:A=(B,y),B=(x,L),L=(a,b),要求:(1)写出下列操作的结果:tail(A)=((y))。head(B)=(x)。(2)请画出广义表A对应的图形表示。答:28已知二叉树如下:请画出该二叉树对应的森林。 答:29请回答下列问题:(1)英文缩写DAG的中文含义是什么?(2)请给出下面DAG图的全部拓扑排序。答:(1)有向无环图 (2)abdcefg,abdcfeg,adbcefg,adbcfeg四、算法阅读题(本大题共4小题,每小题5分,共20分)30已知线性表(a1,a2,a3.,an)按顺序存放在数组a中,每个元素均为整数,下列程序的功能是将所有小于0的元素移到全部大于等于0的元素之前。例如,有7个整数的原始序列为(x,x,-x,-x,x,x,-x),变换后数组中保存的序列是(-x,-x,-x,x,x,x,x)。请在程序处填入合适的内容,使其成为完整的算法。f30(int a,int n) int k,m,temp;m= (1);while (am0 &mn)m= (2);k=m;while (k=0&kn)k= (3);if(kn) temp=ak;ak=am;am= (4);m= (5);答:(1)0 (2)m+1 (3)k+1 (4)temp (5)m+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 19785-4:2025 EN Information technology - Common Biometric Exchange Formats Framework - Part 4: Security block format specifications
- 【正版授权】 ISO 20188:2025 EN Space systems - Product assurance requirements for commercial satellites
- 【正版授权】 ISO 80000-12:2019/AMD1:2025 EN Amendment 1 - Quantities and units - Part 12: Condensed matter physics
- 【正版授权】 ISO 18997:2025 EN Water reuse in urban areas - Guidelines for urban reclaimed water for landscaping uses
- 【正版授权】 ISO 16610-31:2025 EN Geometrical product specifications (GPS) - Filtration - Part 31: Robust profile filters: Gaussian regression filters
- 校外小饭桌安全知识培训课件
- 校园超市消防知识培训总结课件
- 销售会计试题及答案
- 斜视护理试题及答案
- 北京预测培训基础知识课件
- 2025年呼伦贝尔市生态环境局所属事业单位引进人才(2人)模拟试卷附答案详解(综合卷)
- 2025年中国建设银行招聘考试(综合知识)历年参考题库含答案详解(5套)
- BMS基础知识培训课件
- 承接战略贴近业务人力资源规划设计到应用
- 消防外管网维修合同范本
- 飞行员心理健康培训课件
- 高一班第一次家长会课件
- 轻度抑郁发作个案护理
- 煤矿井下巷道三维建模技术研究与应用
- 中医康复技术专业教学标准(中等职业教育)2025修订
- 2026版步步高大一轮高考数学复习讲义第三章 进阶篇 不等式恒(能)成立问题 进阶2 参数半分离与主元变换含答案
评论
0/150
提交评论