08_09(2)数据结构试卷A_第1页
08_09(2)数据结构试卷A_第2页
08_09(2)数据结构试卷A_第3页
08_09(2)数据结构试卷A_第4页
08_09(2)数据结构试卷A_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、精选文档一、填空题(每空1分,共18分)1、算法的5个重要特性是_、_、_、输入和输出。2、单链表中,除首元素结点外,其它任一元素结点的存储位置由_指示。3、在双向链表中,欲在p所指结点之前插入一个由s指向的结点,请完成有关操作。 s->prior=p->prior; p->prior=s; _; s->next=p;4、对于栈只能在_插入和删除元素;对于队列只能在_插入元素和_删除元素。5、在模式匹配的KMP算法中用到了一个next函数,若nextj=k,则说明在模式串T中存在一个与“T1T2.Tk-1”相等的子串“_”。6、在对N个元素进行冒泡排序时,最少的比较次数

2、是_。7、假设有二维数组A6Í8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A共占用_个字节的存储单元,按行存储时,元素A25的第一个字节的地址为_。8、若以4,5,6,7,8 作为叶子结点的权值构造哈夫曼树,则其带权路径长度为_。9、采用分块查找时,若表中共有256个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分_个结点为最佳。10、广义表g=( ()的表头是_,表尾是_。11、假定对长度为300 的有序表进行折半查找,则对应的判定树的高度为_,最后一层的结点数为_。二、单项选择题(每空1分,共10

3、分)1、线性结构的顺序存储结构是一种j_的存储结构,线性结构的链式存储是一种k_的存储结构。A. 随机存取 B. 顺序存取 C. 索引存取 D. 散列存取2、执行下面程序段时,S 语句的执行次数为_。 for (int i=1;i<=n-1;i+) for (int j=i+1;j<=n;j+) S;A. B. C. D. 3、将两个各有N个元素的有序表归并为一个有序表,其最少的比较次数是_。A. N; B. 2N-1; C. 2N; D. N-14、已知4个元素进栈的顺序依次为A,B,C,D,则下面哪一个出栈序列是不可能得到的_。A. ABCD; B. CBAD; C. CADB

4、; D. BCAD5、有向图如图1所示,由该图得到的一个拓扑有序序列为_。V1V2V3V4V5V6图1A. V1 , V4 , V6 , V2 , V5 , V3 B. V1 , V2 , V3 , V4 , V5 , V6 C. V1 , V4 , V2 , V3 , V6 , V5 D. V1 , V2 , V4 , V6 , V3 , V56、G是一个非连通无向图,共有28条边,则该图至少有_个顶点。A. 8 B. 9 C. 10 D. 127、在下面算法中,_算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。A. 堆排序 B. 冒泡排序 C. 插入排序 D. 快

5、速排序8、与其它查找方法相比,散列查找法的特点是_。A. 通过关键字的比较进行查找B. 通过关键字计算元素的存储地址进行查找C. 通过关键字计算元素的存储地址并进行一定的比较进行查找D. 以上都不是9、某二叉树的层序序列是abcdefgh,中序序列是dbgehacf,则该树的后序序列是_。A . fahgbec B. eagbfdc C. dghebfca D. acdbfge三、应用题(每小题9分,共36分)1对图2所示的二叉树,要求FHGEAICDB图2(1)将其转换为树或森林,画出转换后的结果。(2)给出对该树或森林分别进行先根遍历和后根遍历得到的结点序列。2无向图如图3所示,画出从顶点

6、A出发用普里姆(prim)算法构造最小生成树的过程,并给出一个从顶点A出发的深度优先搜索序列。435AECDFBG216135图33使用哈希函数H(key)=key % 11,把一个整数值转换成哈希表下标,现要把数据1、13、12、34、38、33、27、22插入到哈希表(表1)中。(1)使用线性探测再散列法构造哈希表,请在表1所示的哈希表中与哈希地址对应的位置上,填写出相应的关键字值和元素插入时的探查次数。(2)假设查找每个元素的概率相同,求出查找成功时的平均查找长度。表1哈希地址012345678910关键字值探查次数4、试说明快速排序的基本思想,并给出对关键字序列 47,33,61,82

7、,72,11,25,57进行快速排序过程的示意(即画出每一趟排序后的关键字序列)。四、算法阅读题(每小题8分,共16分)1、阅读下面算法,按要求作答,其中Push(S, d)表示将数据元素d压入栈S中,Pop(T,d)表示T的栈顶元素出栈并存入d中。int algo (Stack S , int e) int d; Stack T; InitStack(T); while(!StackEmpty(S) Pop(S,d); if(d!=e) Push(T, d); /while while(!StackEmpty(T) Pop(T, d);Push(S, d);(1)假设栈S中的原始数据从栈底至

8、栈顶依次为:3,5,7,12,5,6,8;e的值为5。请写出算法执行完后栈S中从栈底至栈顶的数据元素序列。(2)简述该算法的功能。2、已知数组a中存放着两组数据元素序列(a0,a1,am-1,b0,b1,bn-1)。下面算法利用原存储空间将a中的数据元素序列就地互换为(b0,b1,bn-1,a0,a1,am-1),算法思想可以描述为:(1)把数组a中的数据元素序列(a0,a1,am-1,b0,b1,bn-1)就地逆置为(bn-1,b1,b0,am-1,a1,a0)。(2)把数组a中的数据元素序列(bn-1,b1,b0,am-1,a1,a0)就地逆置为(b0,b1, bn-1,am-1,a1,a

9、0)。(3) 把数组a中的数据元素序列(b0,b1, bn-1,am-1,a1,a0)就地逆置为(b0,b1,., bn-1,a0,a1.,am-1)。根据上述算法思想,请在空缺处填上适当的语句,以完善算法功能。void converse (ElemType a,int low,int high) /将数组a中自下标low 至high的一段数据元素逆置int n,i;ElemType x;n= (high-low+1)/2; / n 为循环次数for(i=0;i<n;i+) x=alow+i; j_; k_;void exchange (ElemType a,int m,int n) c

10、onverse(a,0,m+n-1);/将数组a中的m+n个元素就地逆置l_;m_;五、算法设计(每小题分,共分)下面两题的数据类型定义和函数首部均已给出,请按要求完成算法设计。编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子结点的个数。typedef struct TnodeTelemType data;/结点数据域struct Tnode *firstchild *nextsibling;/指向长子和右兄弟的指针CSnode,*CStree;void leafcount(CStree T , int *count) / 统计以孩子兄弟链表存储表示的树T的叶子结点数目,结果存于count 所指单元 ,/ T为指向根结点的指针 /leafcout2、写出二分查找的递归算法。#define MaxL <表中最多记录数>typedef struct KeyType key; / 主关键字域 OtherType otherinfo; / 其它数据域NodeType;ty

温馨提示

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

最新文档

评论

0/150

提交评论