1、 数据结构试题 6一、单项选择题(每小题 3 分,共 30 分) 1设栈的输入序列是 1、2、3、4,则_不可能是其出栈序列。 ( )A 1234 B 2134 C 1432 D 4312 2在一个具有 n 个结点的线性链表中查找某个结点,若查找成功,需要平均比较_个结点。 ( )A n B n/2 C (n+1)/2 D (n-1)/2 3设每个字符占一个字节,二维数组 A 中每个元素有 6 个字符组成,其行下标从 0 到 9,列下标从 0 到 3,元素_当 A 按行优先存储起始地址与当A 按列优先存储的起始地址相同。 ( )A A30 B A31 C A32 D A23 4具有 2000
2、个结点的非空二叉树的最小深度为_。 ( )A 9 B 10 C 11 D 12 5已知某二叉树的后根序列是 dabec,中根序列是 debac,则先根序列是_。( )A acbed B decab C deabc D cedba 6. 无向图中所有边的数目等于所有顶点的度数之和的_倍。 ( )A 1 B 2 C 1/2 D 不一定 7递归函数 F(n)=F(n-1)+n+1(n1)的递归体是_。 ( )A F(0)=0 B F(1)=1 C F(n)=n+1 D F(n)=F(n-1)+n+1 8. 若需要在 O(nlog2n)的时间内完成对 n 个元素的排序,且要求排序是稳定的,则可选择的排
3、序方法是_。 ( )A 快速排序 B 堆排序 C 归并排序 D 直接插入排序 9在对 n 个元素的序列进行排序时,堆排序所需要的附加存储空间是_。 ( ) A O(1) B O(log2n) C O(n) D O(n log2n) 10假定有 K 个关键字互为同义词,若用线性探查法把这 K 个关键字存入散列表中,则总的探查次数至少为_。 ( ) A K-1 B K C K+1 D K(K+1 )/22 二、填空题(每小题 2 分,共 20 分) 1对于一个长度为 n 的顺序存储的线性表,在表头插入元素的时间复杂度为_,在表尾插入元素的时间复杂度为_。 2. 在一棵二叉树中,第 5 层(根结点为
4、 1 层)上的结点数最多为_。 3. 一棵高度为 h 的理想平衡树中,最少含有_个结点,最多含有_个结点。4. 在一个小根堆中,堆顶结点的值是所有结点中的_,在一个大根堆中,堆顶结点的值是所有结点中的_。 5. 在一个具有 n 个顶点的无向图中,要连通所有顶点则至少需要_条边。 6假定一个图具有 n 个顶点和 e 条边,贝采用邻接矩阵、邻接表表示时,其相应的空间复杂度分别为_和_。 7以二分查找方法查找一个线性表时,此线性表必须是_存储的_表。 8在线性表的散列存储中,处理冲突有_和_两种方法。 9快速排序在平均情况下的空间复杂度为_,在最坏情况下的空间复杂度为_。10在一棵 20 阶 B_树
5、中,每个非树根结点的关键字数目最少为_个,最多为_ 。三、判断题 (认为对的,在题后的括号内打“” ,错的打“” ,每小题 分,共)1线性表中,每个结点都有一个前驱和一个后继。 ( )2有向图的邻接表和逆邻接表中的结点数一定相同。 ( ) 3. 单链表中要取得某个元素,只要知道该元素的指针即可,因此单链表是随机存取的存储结构。 ( ) 4. 在快速排序、归并排序和 shell 排序中,稳定的是 shell 排序。 ( )5. 对不同的存储结构,检索的方法不同。 ( ) 6. 在散列表中,负载因子值越小则存元素时发生冲突的可能性就越大。 ( ) 7. 由于二叉树中每个结点的度最大为 2,所以二叉
6、树是一种特殊的树。 ( ) 8. 若一棵二叉树的树叶是某子树对称序周游序列中的第一个结点,则它 必是该子树后序周游序列中的第一个结点。 ( ) 9. 二叉树按线索化后,任一结点均有指向其前驱和后继的线索。 ( ) 10.在采用线性探查法处理冲突的散列表中,所有同义词在表中相邻。 ( ) 四、简答题(每题 10 分,共 60 分) 1说明数组和链表的区别,各有何优缺点? 2回答下列关于堆的一些问题: (1)堆的定义是什么? (2)存储表示是顺序的,还是链式的? (3)设有一个最小堆,其具有最小值、最大值的元素分别可能在什么地方? 3完全二叉树用什么数据结构实现最合适,为什么? 4. 在直接插入排
7、序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排 序和归并排序中,哪些易于在链表(包括各种单、双、循环链表)上实现? 5用下列三种表示法画出下图 G 的存储结构 (1) 相邻矩阵 (2) 邻接表 (3) 邻接多重表 6已知序列(70,83,100,65,10,32,7) ,请给出采用插入排序法对该序列作升序排序时的每一趟结果。 五、算法设计题(每题 15 分,共 30 分) 说明:可以使用任何高级程序设计语言或伪(类)程序设计语言。 1已知非空单链表第一个结点由 list 指出,写一算法,交换 p 所指结点(不是链表中第一个结点,也不是链表中最后的那个结点)与其下一个结点在链表中的位置,并
8、给出算法的时间复杂度。 2设计一个算法,统计一个采用邻接矩阵存储、具有 n 个顶点的无向无权图所有顶点的度。数据结构试题 6 答案一、1. D 2. C 3.B 4. C 5.D 6.C 7.D 8. C 9.A 10. D 二、1O(n) O(1) 216 32 h 一 1 2 h 一 1 4最小值 最大值 5n 一 1 6O(n 2 ) O(n 十 e) 、 7顺序 有序 8开放定址法 链接法(次序无先后) 9O(1og 2n) O(n) 109 19 三、1.X 2. 3.X 4.X 5. 6.X 7.X 8. 9.X 10.X四、1区别:数组占用连续的内存空间,链表不要求结点的空间连续
9、。 各有何优缺点:(1)插入和删除操作。数组插入和删除需移动数据元素,链表插入和删除不移动数据元素,链表比数组易于实现插入和删除操作;(2)在空间占用方面,数组优于链表;(3)在数据存取方面,数组是随机存取方式,而 2 链表是顺序存取方式。2 (1)堆是 n 个元素的有限序列 K1,K2, , KN,且满足以下条件:Ki = K2i 且 Ki = K2i+1 I=1,2, n/2 (最大堆) (2)因为完全二叉树采用顺序存储更加有效,所以堆应采用顺序存储结构。 (3)最小堆的最小值元素必在堆顶,最大值的元素只有在叶结点上。 3完全二叉树用一维数组实现最合适。 (1)不存在空间浪费问题;(2)顺
10、序存储方式下,父子结点之间的关系可用公式描述,访问结点方便。采用链表存储存在空间浪费问题,且不易寻找父结点。 4.在上述排序方法中,只有直接插入排序、冒泡排序、直接选择排序易于在链表上实现。 5.相邻矩阵: 邻接表:邻接多重表:6 初 始:(70) ,83,100,65,10,32,07第 1 趟:(70,83) ,100,65,10,32,07 第 2 趟:(70,83,100) ,65,10,32,07 第 3 趟:(65,70,83,100) ,10,32,07 第 4 趟:(10,65,70,83,100) ,32,07第 5 趟:(10,32,65,70,83,100) ,07 第
11、6 趟:(07,10,32,65,70,83,100)五、 算法的 ADL 描述如下:算法 CHANGE(list,p) qlist WHILE(next(q)p) DO qnext(q)rnext(p)next(q)r next(p)next(r) next(r)p 算法的时间复杂度为 O(n) 2假设邻接矩阵为 adjacency (二维数组) ,顶点的度保存在一维数组 A 中。 算法的 ADL 描述如下:初始化 FOR i=1 TO n DOAi0 FOR i=1 TO n DO FOR j=1 TO n DO IF adjacencyi,j=1 THEN AiAi+1数据结构试题 7一
12、、 单项选择题(每小题 2 分,共 20 分) 1序列 A,B,C,D,E 顺序入栈,不能获得的序列是: ( ) AABCDE B. CDEBA C. EDCBA D.DECAB 2. 通常算法分析中算法的空间复杂度是指: ( ) A. 所需全部空间大小 B. 完成运算所需辅助空间大小 C. 待处理数据所需全部空间大小 D. 存储空间的复杂程度 3. Huffman 树是: ( ) A. 最佳二叉树 B. 路径长度最短的二叉树 C. 最佳二叉排序树 D. 加权路径长度最短的二叉树 4. 在单链表中删除 P 指针後的节点 Q 需要修改的指针域个数为: ( ) A2 B. 4 C. 6 D. 1
13、5设 n0,n1,n2 分别是二叉树中度为 0,1,2 的结点数,则有: ( ) An0=n2+1 B. n0=n2-1 C. n0=n1+1 D. n0=n1-1 6下列说法中错误的是: ( ) A. n 个结点的树的各结点度数之和为 n-1 B. n 个结点的有向图最多有 n*(n-1)条边 C. 用相邻矩阵存储图时所需存储空间大小与图中边数有关 D. 散列表中碰撞的可能性大小与负载因子有关 7 若线性表采用顺序存储结构, 每个元素占用 4 个存储单元, 第一个元素的存储地址为 100, 则第 12 个 元素的存储地址是: ( ) A 113 B. 144 C. 148 D. 412 8.
14、 下列哪一种排序方法的比较次数与纪录的初始排列状态无关? ( ) A. 直接插入排序 B. 起泡排序 C. 快速排序 D. 直接选择排序 9. 设有 5000 个无序的元素,希望用最快的速度挑选出其中前 50 个最大的元素,最好选用: ( ) A.冒泡排序 B.快速排序 C.堆排序 D.基数排序 10. 用某种排序方法对序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的 变化情况如下,则所采用的排序方法是: ( ) 20,15,21,25,47,27,68,35,84 15,20,21,25,35,27,47,68,8415,20,21,25,27,35,47,68
15、,84 A选择排序 B希尔排序 C归并排序 D快速排序 二、判断题(每小题 1 分,共 10 分,对的打,错的打) 1. 给出不同输入序列建造二叉排序树,一定得到不同二叉排序树 。 ( ) 2. 有向图的邻接表和逆邻接表中的结点数一定相同。 ( ) 3. 图 G 的拓扑序列唯一,则其弧数必为 n-1(其中 n 为 G 的顶点数)。 ( ) 4. 在索引顺序文件中插入新的记录时,必须复制整个文件。 ( ) 5. 如果某种排序算法是不稳定的,则该方法没有实际的应用价值。 ( ) 6. 对 n 个记录进行冒泡排序,在最坏情况下所需要的时间是 O(n 2 ) ( ) 7. 在线性结构中,每个结点都有一
16、个直接前驱和一个直接后继。 ( ) 8. AVL 树的任何子树都是 AVL 树。 ( ) 9. B树既适于随机检索,也适于顺序检索。 ( ) 10. 两个字符串相等的充要条件是两个串包含的字符相同。 ( )三、 填空题(每空 1 分,共 15 分) 1用起泡法对 n 个关键码排序,在最好情况下,只需做_次比较和 _次移动; 在最坏的情况下要做_ _ _ _次比较。 2若按层次顺序将一棵有 n 个结点的完全二叉树的所有结点从 1 到 n 编号, 那么当 i 为_且大于 1 时,结点 I 的左兄弟是结点 _ _,否则结点 i 没有左兄弟。 3具有 N 个结点的完全二叉树的深度为 _。 4. 树的三
17、种主要的遍历方法是:_ _ _、_ _和层次遍历。 5采用散列技术实现散列表时,需要考虑的两个主要问题是: _和解决_ _。 6在一个带头结点的单循环链表中,p 指向尾结点的直接前驱,则指向头结点的指针 head 可用 p 表示为 head=_。 7栈顶的位置是随着_、_操作而变化的。 8 已知一棵完全二叉树中共有 768 结点,则该树中共有_个叶子结点。 四、简答题(第 1、2 题每小题 6 分,第 3、4、5 题每小题 8 分,共 36 分)1已知一个无向图的顶点集为a, b, c, d, e ,其邻接矩阵如下图 1 所示 (1)画出该图的图形;(2)根据邻接矩阵从顶点 a 出发进行深度优
18、先遍历和广度优先遍历,写出相应的遍历序列。( 图 1) ( 图 2) 2将上图 2 所示的二叉树转换为树或树林(画出连线-删线图和结果图) 。 3:设有一组关键码序列:6097,3485,8129,407,8136,6615,6617,526,12287,9535,9173,2134,1903,99和散列函数:H(key)=key MOD 19。 采用线性探测法解决冲突,试在 018 的散列地址空间中对该关键码序列构造散列表。 4设有关键码集合 K=72, 73,71,23,94,16,05,68 ,将其建成一个堆(画出每步所 得的图即可) 。 5从一棵空的 AVL 树开始,将关键码 xal,
19、wan,wil,zol,yo,xum 逐个插入,画出每插入一 个关键码后得到的 AVL 树。 五、 算法设计(19 分) 用类 PASCAL 语言或类 C 语言写出将 n 个记录用冒泡排序法进行升序排 序的算法(第一次冒泡将排序码最小的记录放在第一个位置,第二次冒泡将排序码次最小的 记录放在第二个位置 )。数据结构试题 7 答案一 1. D 2. A 3. D 4. D 5. A 6. C 7. B 8. D 9. C 10. D 二 1 2. 3. 4. 5. 6. 7. 8. 9. 10. 三 1 n-1 0 n(n-1)/2 2 奇数 i-1 3 log2N+1 4 先根 后根 5选取好
20、的散列函数 冲突(碰撞) 6 P.next .next 7 进栈 退栈 8 384 四1. 2、深度:a,b,d,e,c 广度:a,b,e,d,c 3、4、5、 五、 TYPE node=RECORD VAR i,j:integer; key:integer; flag:01; info:datatype X:node;END; R:arrar1n of node; FOR i:=1 TO n DOBegin flag:=0; FOR j:=n-1 TO I DO if Rj+1.keyrmid.key THEN _3_ ELSE _4_ END;Binfind:=y;END; 4修改起泡排序
21、算法,反方向进行扫描,即第一趟把排序码最小的记录放到最前头,第 二趟把排序码次小的放到第二个位置, 第三趟把排序码第三小的放到第三个位置, 如此反复进行.用类 pascal 语言给出该算法的程序.(类型说明与上面第 3 小题相同) 5试编写一个交换二叉树 T 中节点的左右子树的类 PASCAL 语言算法, 设节点的类型为:TYPE bitree=node; Node=RECORD Data:datatype; Lchild,rchild:bitree END;数据结构试题 8 答案一、1、A 2、D 3、B 4、C 5、B 6、A 7、D 8、C 9、B 10、B 11、B 12、B 13、B
22、 14、A 15、 A 二、 1、初等,组合 2、存储密度 3、 散列函数的选取,冲突(碰撞)的解决 4、树(森)林 5、按关键码排序 6、1/2 di 7、生成树林 8、相对位置 三、1、B C E 2、B C 3、A B C D 四、1、快速排序是不稳定的 如对初始类排序码:81 2 5 82 4 1 经第一趟快排后为:1 2 5 82 48 1 经第二趟快排后为: 1 2 5 82 48 1 经第三趟快排后为: 1 2 5 82 48 1 经第四趟快排后为: 1 2 4 5 82 81 81 和 82 相对位置发生了变化 2、由于有了线索的存在而使的周游树形结构和找结点在指定次序下的前驱
23、、后继的算法变 得很简单、直截了当。3、关键码是其值能唯一确定一个记录的字段或字段组合,两个记录的关键码不可能相等 排序码是排序运算的依据,是结构中的一个或多个字段,两个记录的排序码可以相同 五、1、 I=1 时 WHILE 循环执行 1 次 故总排序时间为: 2(i+1)= 2i I=2 时 WHILE 循环执行 2 次 n 2 n I=3 时 WHILE 循环执行 2 次 I=4 时 WHILE 循环执行 3 次 I=5,6,7 时 WHILE 循环执行 3 次I=8 时 WHILE 循环执行 4 次 2、k=n+(n-1)+(n-2)+n-(i-2)+(j-i+1) =n(i-1)-i+
24、2+(i-1)+j=ni-n-(i+1)(i+2)/2+j=i 2 +(2n+3)i/2+j-(n+1) 所以 f1(i)=i 2 +(2n+3)i/2 ; f2(j)=j ; c=-(n+1) 3、 检索次数 平均查找长度为:1/12(1+2*2+3*4+4*5)=37/12 六、1、得到: 2、深度遍历结果为:1,2,3,5,4,6,7,8 3、 1、Y=0 2、Low High 3、Low:=Mid+1 4、High:=Mid-1 4、 VAR R:table;X:node; i,j:integer;flag:01; 1. 循环,i 以-1 为步长,从 1 到 n-1,执行 (n-1 次
25、冒泡)(1) flag 0 (2) 循环,j 以-1 为步长,从 n 到 i+1 执行 若 Rj.keyRj-1.key则 flag-1 x Rj;R j Rj-1;R j-1 x (3) 若 flag=0 则跳出循环 2.算法结束 5、 Procedure exchange_lr_node(t:bitree); begin if t=nil then 算法结束 else beginq t .lchild; t.lchild t.rchild; t.rchild q; exchange_lr_node(t.lchild); exchange_lr_node(t.rchild) end;end;
26、数据结构试题 9一.单项选择题(每小题 1 分 ,15 分) 1. 作为一个算法必须满足: ( ) A. 2 个要素 B. 4 个要素 C. 5 个要素 D. 7 个要素 2. 双链表中,删除节点 P 之后的节点 Q 需要修改的指针域的个数为: ( ) A. 1 B. 2 C. 3 D. 4 3. 队列是一种: ( ) A. 链表 B. LIFO 表 C. 顺序表 D. FIFO 表 4. 串的求子串运算 SUBSTR(ABCDEF,2,3) 的引用结果是: ( ) A BCD B. BC C. CDE D. CD 5. 循环队列 SQ 有 m 个单元 ,其满队条件是: ( ) A. SQ.r
27、ear=SQ.front C. SQ.rear MOD M+1=SQ.front B. SQ.rear+1=SQ.front D. SQ.rear =SQ.front MOD M+1 6. 在列主序下顺序的存储数组 A 4 * 4 的上三角元素 A(3,2)的位置是第: ( ) A. 10 个 B. 7 个 C. 6 个 D. 5 个 7. 广义表 D=(a,D)的深度为: ( ) A. 2 B. 1 C. + D. 8. 有三个节点 A,B,C 可以构成多少种二叉树: ( ) A. 5 B. 8 C. 32 D. 309. 有 n 个节点的完全二叉树,其深度为: ( ) 10.中序序列和后序
28、序列相同的二叉树是: ( ) A. 完全二叉树 B. 满二叉树 C. 所有结点无左孩子的二叉树 D. 所有结点无右孩子的二叉树 11.若有向图中有 n 个结点,e 条边,则它的邻接表需要表节点数目为 : ( ) A. e B. 2e C. e-1 D.e+1 12.克鲁斯卡尔(KRUSKAL)算法求最小生成树,是针对那种图的: ( ) A. 无向图 B. 有向图 C. 连通无向图 D. 连通带权图 13.在排序过程中,使用辅助空间为 O(n)的算法是: ( ) A. 插入法 B. 归并法 C. 快速 D. 分配 14.在散列结构中,同义词是指: ( ) A. R1.KEYR2.KEY 且 HA
29、SH(RI.KEY)=HASH(R2.KEY) B. R1.KEY=R2.KEY C. R1.KEY=R2.KEY 且 HASH(RI.KEY)=HASH(R2.KEY) D. R1.DATA=R2.DATA 15.ISAM 文件属于: ( ) A. 顺序文件 B. 散列文件 C. 索引文件 D. 多关键字文件 二.多项选择题(错选,多选,漏选均不得分 .每小题 1 分,共 5 分) 1. 在下列算法中,涉及到栈运算的有: ( ) A. 二叉树的遍历 B. 广度优先搜索遍历 C. 深度优先搜索遍历D. 表达式求值 E. 基数排序 2. 排序算法在最坏执行情况下,算法的时间复杂度是 O(n 2
30、)的有: ( ) A.插入排序法 B. 块序排序法 C. 堆排序法 D. 归并排序法 E. 基数排序法 3. 稀疏矩阵通常采用的存储方式有: ( ) A. 单链表 B. 循环链表 C. 三元组表 D. 散列表 E. 十字链表 4. 根据排序期间数据规模的大小及数据所处存储器的不同,可以将排序分为:( ) A. 插入排序 B. 希尔排序 C. 交换排序 D. 内部排序 E.外部排序 5. 能够从任一节点访问到其余节点的结构有: ( ) A. 单链表 B. 循环链表 C. 双链表 D. 二叉链表 E. 邻接表 三.填空题(每空 1 分,共 10 分 ) 1. 数据的基本存储结构有_,_,_,_四种
31、. 2. 排序方法的稳定性是值排序关键字值相同的记录在排序过程中不改变其原有的 _关系. 3. 算法的确定性是指每条_. 4. 散列结构中处理冲突的方法基本上可分为两大类: _和_. 5. 文件的操作主要有:_ 和_两类. 四.判断改错题(对的打” ,错的打”,并说明理由.每小题 2 分,判断和说明各得 1 分,判断 3 错误,全题无分.共 10 分) 1. 二叉树是度为 2 的树. ( ) 2. 堆排序是不稳定的,其时间复杂度为 O(n log 2 n). ( ) 3. 队列是受限的线性表,限制在于节点的位置相对固定. ( ) 4. 要完成树的层次遍历一般要利用栈作为辅助结构. ( ) 5.
32、 图的最小生成树如果存在,则一般唯一. ( ) 五.解释概念题(每小题 3 分, 共 9 分) 1. 三元组表 2. 拓扑排序 3.AVL 树 六.简答题(共 31 分) 1. 把下图森林转化为一棵二叉树,并画出主要转化过程图示.(4 分)2. 给定权集 W=2,3,4,7,8,试构造关于 W 的一棵哈夫曼树,并求其加权路径长度 WPL 的 值.(6 分) 3. 对于下图给出其邻接表,并从顶点 1 出发依据存储结构进行广度遍历,写出遍历结果. 4. 有一棵二叉树其前序序列为 ABCDEF,中序序列为 BCAEDF,画出此二叉树的示意图,并给 出其后序序列的线索树.(6 分) 5. 对于关键字集
33、合51,28,36,86,7,请建立一个堆,要求画出堆形成的示意图 .(6 分) 6. 在双链表 H 中,现在要在节点 P 之后插入一个节点 Q,请写出插入动作的具体语句 . (4 分) 七.算法设计(共 20 分) 1. 数组 A1m作为循环队列的存储区域,试编写一个出队的类 PASCAL 语言算法.(6 分) 2利用类 pascal 语言写出统计二叉树中节点个数的算法(6 分). 3利用类 pascal 语言写出快速排序中一趟块排的算法(8 分).数据结构试题 9 答案一、1、C 2、B 3、D 4、A 5、D 6、B 7、 C 8、D 9、A 10、D 11、A 12、D 13、B 14
34、、A 15、C 二、 1、A C D 2、A B 3、A C D E 4、D E 5、B C 三、1、顺序,链接,索引,散列 2、相对位置 3、指令必须有确切含义,无歧义性 4、开地址法,拉链法 5、修改,检索 四、 1、 2、 3、 4、 5、 五、 1、三元组表 P244 2、拓扑排序 P229 3、AVL 树 P180 六、3、邻接表存储表示同 A 卷六、 2 广度遍历结果:1, 2, 6, 3, 4, 7, 8, 5 4、后序:C B E F D A 5、 6、 q.llinkp q.rlinkp.rlinkp.rlink.llinkq p.rlinkq 七、算法设计( 6+6+8=2
35、0) 1、1. if R=F then print(underflow) else FF MOD m+1 算法结束 2、 TYPE pointer=node node=RECORD info: datatype; llink, rlink: pointer ENDVAR t: pointer; Count: integer; 进入算法时 ,二叉树已用二叉链表存储,t 指向根结点,count 初值为 0 Procedure node_Count (t: pointer; VAR count: integer); begin if t=nil then 算法结束 else begin count:
36、=count+1; node_count(t.llink,count);node_count(t.rlink,count) end end; 3、TYPE node=RECORDKey: integer; Info: datatype End; List=ARRAP 1NOF node; VAR X:node; j:0n; Procedure quickpass(VAR R:list;l,r:integer;VAR i:integer); begini:=l;j:=r;x:=Ri;repeatwhile (Ri.key=x.key)and(ij doj:=j-1; if i j then Rj
37、:=R j;i:=i+1; while (Ri.key=x.keyand (ij do i:=i+1; if ij then Rj:= R i;j:=j-1 until i=j R i:=x end 注:整个快速排序 Procedure quicksort (VAR R:list;s,t:integer);Begin If st Then quickpass(R,s,t,i); quicksort(R,s,i-1); quicksort(R,i+1,t) end;数据结构试题 10一.单项选择题(每小题 1 分, 共 20 分) 1. 设 n 为正整数,以下程序段的执行次数是: ( ) k:=
38、0;s:=1; REPEATs:=s+k; k:=k+1 UNTIL (k=-n) A. (2n+3)次 B. 2(n+1)次 C. 无限多次 D.1 次 2. 序列 A,B,C,D,E 顺序入栈,不能获得的序列是: ( ) A. ABCDE B. CDEBA C. EDCBA D.DECAB 3. 数据结构的内容包括: ( )A. 三层次五要素 C. 五层次三要素 B. 三层次三要素 D. 五层次五要素 4. 在双链表中要在 p 所指的结点后插入一个新结点 q,要修改的指针域个数为:( ) A. 2 个 B. 4 个 C. 6 个 D. 8 个 5. 在列主序下顺序的存储数组 A 4 * 4
39、 的下三角元素 A(3,2)的位置是第: ( ) A. 5 个 B. 6 个 C. 7 个 D. 10 个 6. n 个结点顺序存储的完全二叉树, i (1in) 结点的父结点的位置是 ( ) 7. 对任何二叉树,设 n0,n1,n2 分别是度数为 0,1,2 的结点数,则有: ( ) A. n0=n2+1 B. n0=n2-1 C. n0=n1+1 D. n0=n1-1 8. 对图(一) 的二叉树,其后续遍历结果为: ( ) 图(一)A. ABDCEF B. ABCDEF C. DBAECF D . DBEFCA 9. 结点可以排在拓扑序列中的图是: ( ) A.无向图 B.有向图 C.有向
40、无环图 D.无向有环图10.串的求子串运算 SUBSTR(ABCDEFGH,4,5) 的引用结果是: ( ) A. DE B. DEFGH C. EFGH D. BCDE 11.对于记录 R1,R2 其健值分别是 K1 和 K2,数据为 D1 和 D2,称 R1 和 R2 是同义词的条件是( ) A. K1=K2 C. K1=K2 且 H(K1)H(K2) B.D1=D2 D.K1K2 且 H(K1)=H(K2) 12.快速排序属于: ( )A. 插入排序 B. 交换排序 C. 选择排序 D. 归并排序 13.AVL 数不平衡后要调整的情形有: ( ) A. 2 种 B. 4 种 C. 6 种
41、 D. 8 种 14.PRIM 算法是求图的 : ( ) A. 连通分量 B. 最短路径 C. 最小生成树 D. 拓扑序列 15.在排序过程序中,使用辅助存储空间为 O(n)的算法是: ( ) A. 插入排序 B. 归并排序 C. 起泡排序 D. 快速排序 16.若无向图中有 n 个结点,e 条边,则它的邻接表需要表节点数目为: ( ) A. 2e B. 2e+n C. 2e+1 D.e+2n 17.字符串的紧缩存储形式是每个字符占: ( )A. 1 个二进制位 B. 1 个字节 C. 1 个字 D. 1 个结点单元 18.循环队列 SQ 有 m 个单元 ,其满队条件是: ( ) A. (SQ
42、.rear+1) MOD M=SQ.front C. SQ.rear=m B. SQ.rear=SQ.front D. SQ.front=m 19.VSAM 文件属于: ( ) A. 顺序文件 B. 散列文件 C. 多关键字文件 D. 索引文件 20下列说法中错误的是: ( ) B. n 个结点的有向图最多有 n*(n-1)条边 C. 用相邻矩阵存储图时所需存储空间大小与图中边数有关 D. 散列表中碰撞的可能性大小与负载因子有关 二.多项选择题(错选,多选,漏选均不得分 ,每小题 2 分,共 14 分) 1. 根据描述算法的语言不同,可将算法分为: ( )A. 形式算法 B.非形式算法 C.
43、伪语言算法 D. 运行终止的程序可执行部分 E. 运行不终止的程序可执行部分 2. 图的常见存储结构可以选取: ( )A. 邻接表 B. 邻接矩阵 C. 逆邻接表 D. 邻接多重表 E. 散列表 3. 在下列算法中,涉及到栈运算的有: ( ) A. 二叉树遍历 B. 广度优先搜索 C. 深度优先搜索D. 构造哈夫曼树 E. 表达式求值算法 4. 某表组织如下 :将元素均匀的分成块,块内元素不排序,块之间排序,则查找块及块内某元素实施的方法是: ( ) A. 折半查块 顺序查元素 B. 顺序查块 顺序查元素 C. 顺序查块 折半查元素D. 散列法查找数据元素 E. 折半查块 折半查元素 5. 能够从任意节点出发访问到其余结点的结构有: ( ) A. 单链表 B. 循环链表 C. 双链表 D. 二叉树表 E. 散列表 6. 数据的逻辑结构与: ( ) A. 数据元素本身的形式,内容有关 B. 数据元素本身的形式,内容无关 C. 数据元素的相对位置有关 D. 数据元素的相对位置无关 E.所含节点个数无