数据结构期中模拟

一、填空题

1.二叉树就是度为 2 的树。(F)

二叉树的度<=2

2.线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以不连续。(T)

在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。

3. 队列适合解决处理顺序与输入顺序相反的问题。(F)

队列适合解决处理顺序与输入顺序相同的问题。

栈适合解决处理顺序与输入顺序相反的问题。

4. 完全二叉树中,若一个结点没有左孩子,则它必是树叶。(T)

完全二叉树中,若一个结点没有左孩子,则它必定没有右孩子(先左再右),所以是树叶

5. n个元素进队的顺序和出队的顺序总是一致的。(T)

队列:先进先出,所以进队和出队的顺序是一致的

6. 某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。(T)

前序遍历:根 左 右

中序遍历:左 根 右

若没有左孩子,都是根 右

7.2^N和N^N具有相同的增长速度。(F)

8.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。(T)

在最后进行插入和删除元素:顺序表

9. 一棵有124个结点的完全二叉树,其叶结点个数是确定的。(T)

完全二叉树:1.叶子结点只可能出现在最后两层

                      2.度为1的结点个数为0或1

124=1+2+4+8+16+32+61;有左孩子

10. 解决问题的效率,跟数据的组织方式无关。(F)

解决问题的效率,跟数据的组织方式有关,跟空间的利用率有关,跟算法的巧妙程度有关。

11. 若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。(F)

中序遍历 :BA

前序遍历:AB

二、选择题 

1.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间?(D)

A.双链表

B.带头结点的双循环链表

C.单循环链表

D.顺序表

2.下面程序段的时间复杂度是(A)。

A.O(1)

B.O(N2)

C.O(log2​N)

D.O(N)

3.已知权值集合为{5,7,2,3,6,1,4},计算带权路径长度WPL(B)。

A.73

B.74

C.75

D.76

4. 在高度为h的完全二叉树中(B)。

A.度为0的结点都在第h层上(也可能在h-1层上)

B.第i (1≤i<h) 层上有2^(i-1)个结点

C.第i (1≤i<h) 层上结点的度都为2(可能有度为0或者度为1的点)

D.不存在度为1 的结点(肯能会存在)

 5.已知二叉树的前序遍历序列为 ABDCEFG,中序遍历序列为 DBCAFEG,则后序遍历序列为 (B)

A.BDACEFG

B.DCBFGEA

C.GFEDCBA

D.ABCDEFG

后序遍历:左 右 根

DCB FGE A 

6. 采用链结构存储线性表时,其地址(A )

A.连续不连续都可以

B.部分地址必须是连续

C.必须是不连续的

D.必须是连续的

7.算法分析的目的是(D )。

A.分析算法的可读性和简明性

B.找出数据结构的合理性

C.研究算法中的输入和输出的关系

D.分析算法的效率以求改进

算法分析的目的是分析算法的效率以求改进

8. 在下述结论中,正确的是:(C)

①只有一个结点的二叉树的度为0;

②二叉树的度为2;(二叉树的度可以小于等于2)

③二叉树的左右子树可任意交换;(不可以)

④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.②④

B.①②③

C.①④

D.②③④

9.一棵树可转换成为与其对应的二叉树,则下面叙述正确的是(C)。

A树的先根遍历序列与其对应的二叉树的中序遍历相同

B.树的后根遍历序列与其对应的二叉树的后序遍历相同

C.树的先根遍历序列与其对应的二叉树的先序遍历相同

D.以上都不对

树的先根遍历等价于二叉树的先序遍历

树的后跟遍历等价于二叉树的中序遍历

10. 采用顺序表存储结构存储的线性表,其首地址为100,每个元素的长度为2,则第5个元素的地址为。(C)

A.100

B.120

C.108

D.110

设首地址为X,每个元素的长度为b则第n个元素的地址为:

x+b*(n-1)=100+2*4=108

11. 数据元素在计算机存储器内表示时,物理相对位置和逻辑相对位置相同并且是连续的,称之为( B)。

A.逻辑结构

B.顺序存储结构

C.链式存储结构

D.以上都不对

12.用数组表示线性表的优点是(B)。

A.不需要占用一片相邻的存储空间

B.便于随机存取

C.便于插入和删除操作

D.可以动态地分配存储空间

顺序表优点:随机存取、存储密度大

链表优点:个数自由可充、不必移动元素,修改效率高。

13. 以下有关二叉树的说法正确的是(C)。

A.任一结点的度均为2

B.二叉树的度为2

C.一棵二叉树的度可以小于2

D.至少有一个结点的度为2

二叉树的度可以小于等于2

14.依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是(B )。

A.d

B.c

C.a

D.b

队列:先进先出:

1.abcd

2.cd(删过之后)

15. 由分别带权为9、2、5、7的四个叶子结点构成一棵哈夫曼树,该树的带权路径长度为:(D)

A.37

B.23

C.46

D.44

16. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间?(A)

A.带头结点的双循环链表

B.单循环链表

C.双链表

D.单链表

带头结点的双向循环链表,头结点的前驱即可找到最后一个结点,可以快速插入,再向前可以找到最后一二个结点快速删除

单链表找到链表尾部需要扫描整个链表

双链表找到链表尾部也需要扫描整个链表

单循环链表只有单向指针,找到链表尾部也需要扫描整个链表

17. 对于任意一棵高度为 5 且有 10 个结点的二叉树,若采用顺序存储结构保存,每个结点占 1 个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元的数量至少是:(A)

A.31

B.16

C.15

D.10

高度为5:1+2+4+8+16=31;

18. 为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是?(A)

A.队列

B.堆栈

C.图

D.树

19.线性表在 ▁▁▁▁▁ 情况下适合采用链式存储结构。(B)

A.线性表的数据元素包含大量的数据项

B.线性表需经常插入或删除数据元素

C.线性表包含大量的数据元素

D.线性表中数据元素的值需经常修改

 线性表需要经常插入或删除数据元素的情况下适合采用链式存储结构

20. 以下关于链式存储结构的叙述中,(D)是不正确的。

A.结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构(链式结构存储密度小)

B.逻辑上相邻的结点物理上不必邻接(对)

C.插入、删除运算操作方便,不必移动结点(对)

D.可以通过计算直接确定第i个结点的存储地址(顺序存储结构中)

链式存储结构如果要计算第I个结点的存储地址,不能直接从首结点直接计算,而必须通过指针域来顺序查找,最后再定位。

顺序存储结构可以按照计算确定i个结点的存储位置,链式存储结构必须遍历所有节点才能确定地址。

21. 按照二叉树的定义,具有3个结点的二叉树有几种?(A)

A.5

B.6

C.4

D.3

22.在线性表中,除开始元素外,每个元素( A)。

A.只有唯一的前趋元素

B.有多个后继元素

C.只有唯一的后继元素

D.有多个前趋元素

23.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是(A)。

A.p->next=p->next->next

B.p->next=p

C.p=p->next->next

D.p=p->next

24.在双向循环链表结点p之后插入s的语句是:(C)

A.p->next=s; s->prior=p; p->next->prior=s ; s->next=p->next;

B.s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;

C.s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;

D.p->next->prior=s; p->next=s; s->prior=p; s->next=p->next;

25.一棵有 1001 个结点的完全二叉树,其叶子结点数为 ▁▁▁▁▁ 。(C)

A.254

B.500

C.501

D.250

度为0的结点数为x,度为2的结点数为x-1;

x+x-1=1001    2x=1002 x=501

26. 下列函数中,哪个函数具有最慢的增长速度:(A)

A.N(log(N^2))

B.N(logN)^2

C.N^2(logN)

D.N^1.5

27.线性表、堆栈、队列的主要区别是什么?(C)

A.堆栈和队列都不是线性结构,而线性表是

B.线性表用指针,堆栈和队列用数组

C.堆栈和队列都是插入、删除受到约束的线性表

D.线性表和队列都可以用循环链表实现,但堆栈不能

28.若一棵二叉树有126个结点,在第7层(根结点在第1层)至多有( D)个结点。

A.不存在第7层

B.32

C.64

D.63

1+2+4+8+16+32+63=126

29. 已知一棵二叉树的树形如下图所示,其后序序列为{ eacbdgf }。树中与结点a同层的结点是:(A)

A.d

B.g

C.c

D. f

30. 有六个元素以6、5、4、3、2、1的顺序进栈,问哪个不是合法的出栈序列?(B)

A.5 4 3 6 1 2

B.3 4 6 5 2 1

C.2 3 4 1 5 6

D.4 5 3 1 2 6

栈:先进后出

6比5先进,所以5,比6 后出,出的顺序应该是5 6而不是6 5

31. 在数据结构中,从逻辑上可以把数据结构分为(D )。

A.动态结构和静态结构

B.内部结构和外部结构

C.紧凑结构和非紧凑结构

D.线性结构和非线性结构

数据的逻辑结构可以分为线性结构和非线性结构

线性结构(线性表、栈、队列、字符串、数组、广义表)

非线性结构(树、图)

数据的存储结构分为顺序存储和非顺序存储

1. 对一个算法的评价,不包括如下( )方面的内容。 A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度 2. 在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. HL=p; p->next=HL; 3. 对线性表,在下列哪种情况下应当采用链表表示?( ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4. 一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. 采用开放定址法处理散列表的冲突时,其平均查找长度( )。 A.低于链接法处理冲突 B. 高于链接法处理冲突 C.与链接法处理冲突相同 D.高于二分查找 6. 若需要利用形参直接访问实参时,应将形参变量说明为( )参数。 A.值 B.函数 C.指针 D.引用 7. 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( )。 A.行号 B.列号 C.元素值 D.非零元素个数 8. 快速排序在最坏情况下的时间复杂度为( )。 A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2) 9. 从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。 A. O(n) B. O(1) C. O(log2n) D. O(n2) 10. 栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 11. 用链接方式存储的队列,在进行插入运算时( ). A. 仅修改头指针   B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 12. 以下数据结构中哪一个是非线性结构?( ) A. 队列    B. 栈 C. 线性表    D. 二叉树 13. 树最适合用来表示( )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 14. 二叉树的第k层的结点数最多为( ). A.2k-1 B.2K+1 C.2K-1    D. 2k+1 15. 若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 16. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 A. O(1)   B. O(n)   C. O(1og2n) D. O(n2) 17. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( )个, A.1 B.2 C.3 D.4 18. 设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 19.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为( ) A.front=front+1 B.front=(front+1)%(m-1) C.front=(front-1)%m D.front=(front+1)%m 20.如下陈述中正确的是( ) A.串是一种特殊的线性表 B.串的长度必须大于零 C.串中元素只能是字母 D.空串就是空白串 21.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行( )趟的分配和回收才能使得初始关键字序列变成有序序列。 (A) 3 (B) 4 (C) 5 (D) 8 22.设用链表作为栈的存储结构则退栈操作( )。 (A) 必须判别栈是否为满 (B) 必须判别栈是否为空 (C) 判别栈元素的类型 (D) 对栈不作任何判别 23.下列四种排序中( )的空间复杂度最大。 (A) 快速排序 (B) 冒泡排序 (C) 希尔排序 (D) 堆 24.数据的最小单位是( )。 (A) 数据项 (B) 数据类型 (C) 数据元素 (D) 数据变量 25.设一组初始记录关键字序列为(50,40,95,20,15,70,60,45),则以增量d=4的一趟希尔排序结束后前4条记录关键字为( )。 (A) 40,50,20,95 (B) 15,40,60,20 (C) 15,20,40,45 (D) 45,40,15,20 26.设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为( )。 (A) 15,25,35,50,20,40,80,85,36,70 (B) 15,25,35,50,80,20,85,40,70,36 (C) 15,25,35,50,80,85,20,36,40,70 (D) 15,25,35,50,80,20,36,40,70,85 27. 设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为( )。 (A) 20 (B) 30 (C) 40 (D) 45 28.下面程序的时间复杂为( )。 for(i=1,s=0; i<=n; i++) { t=1; for(j=1;jnext=top; (D) top=top->next; 33. 字符串的长度是指( )。 (A) 串中不同字符的个数 (B) 串中不同字母的个数 (C) 串中所含字符的个数 (D) 串中不同数字的个数 34. 队列是一种( )的线性表。 (A) 先进先出 (B) 先进后出 (C) 只能插入 (D) 只能删除 35.设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选择( )。 (A) 小于等于m的最大奇数 (B) 小于等于m的最大素数 (C) 小于等于m的最大偶数 (D) 小于等于m的最大合数 36.如下代码段输出的结果是( )。 String s1 = "abc"; String s2 = new String(s1); System.out.println(s1 == s2 + ","); System.out.println(s1.equals(s2)); A.true,true B.false,false C.true,false D.false ,true 37.二叉树有( )种不同的基本形态。 A.3 B.4 C.5 D.6 38.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是( )。 (A) F,H,C,D,P,A,M,Q,R,S,Y,X (B) P,A,C,S,Q,D,F,X,R,H,M,Y (C) A,D,C,R,F,Q,M,S,Y,P,H,X (D) H,C,Q,P,A,M,S,R,D,F,X,Y 39.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C )。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M 40.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。 (A) BADC (B) BCDA (C) CDAB (D) CBDA 41.设某完全无向图中有n个顶点,则该完全无向图中有( )条边。 (A) n(n-1)/2 (B) n(n-1) (C) n2 (D) n2-1 42.设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。 (A) 9 (B) 10 (C) 11 (D) 12 43.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为( A )。 (A) 10,15,14,18,20,36,40,21 (B) 10,15,14,18,20,40,36,21 (C) 10,15,14,20,18,40,36,2l (D) 15,10,14,18,20,36,40,21 44.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。 (A) 3 (B) 4 (C) 5 (D) 8 45.设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到Hash表中需要做( )次线性探测。 A.2 B.n(n+1) C.n(n+1)/2 D.n(n-1)/2 46.设一组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利用二分法查找关键字90需要比较的关键字个数为( )。 A.1 B.2 C.3 D.4 47.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( )。 A.空或只有一个结点 B.高度等于其结点数 C.任一结点无左孩子 D.任一结点无右孩子 48.设有n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。 (A) 1 (B) n (C) nlog2n (D) n2 49.下面关于线性表的叙述错误的是( )。 (A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现 50.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为( )。 (A) 100 (B) 40 (C) 55 (D) 80 51数据结构是指数据及其相互之间的______________。当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。 52.一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是 。 53.队列的插入操作是在队列的___尾______进行,删除操作是在队列的____首______进行。54.根据搜索方法的不同,图的遍历有 和 两种。 55.堆栈的操作特点是 。 56. 若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A[0]中。其余类推,则A[ i ]元素的左孩子元素为________,右孩子元素为_______________,双亲元素为____________。 57. 快速排序算法的平均时间复杂度为____________,直接插入排序算法的平均时间复杂度为___________。 58.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。 59.一棵高度为5的二叉树中最少含有______个结点,最多含有_____个结点。 11.对于给定的若干个元素,可以构造出的逻辑结构有 结构, 结构和 结构三种。 60.后缀算式9 2 3 +- 10 2 / -的值为__________。中缀算式(3+4X)-2Y/3对应的后缀算式为_______________________________。 61.设完全二叉树的顺序存储结构中存储数据ABCDE,要求给出该二叉树的链式存储结构并给出该二叉树的前序、中序和后序遍历序列。 62.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL。 63.设一组初始记录关键字序列为(19,21,16,5,18,23),要求给出以19为基准的一趟快速排序结果以及第2趟直接选择排序后的结果。 64..线性表的存储结构有哪两种,各有何特点? 65.在顺序循环队列中,什么是假溢出?请指出解决假溢出的常见方法。 66.阅读下面的算法: LinkList mynote(LinkList L) {//L是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1: while(p->next) p=p->next; S2: p->next=q;q->next=NULL; } return L; } 语句S1和语句组S2的功能是什么? 67.已知一个无向图的顶点集为{a, b, c, d, e} ,其邻接矩阵如下所示 (1)画出该图的图形; (2)根据邻接矩阵从顶点a出发进行深度优先遍历和广度优先遍历,写出相应的遍历序列。 68.已知关键字序列为{8,17,26,32,40,72,87,99},采用折半查找算法,给定值为70,35时分别与哪些元素比较?画出相应的二叉判定树 69. 设散列表的长度为8,散列函数H(k)=k mod 7,初始记录关键字序列为(25,31,8,27,13,68),要求分别计算出用线性探测法和链地址法作为解决冲突方法的平均查找长度。 70.对于KMP算法,模式串中每个字符的最大真子串构成一个数组,定义为模式串的next[j]函数。next[j]函数定义如下: Max{k|0<k<j且“t0t1…tk-1”=“tj-ktj-k+1…tj-1”} 当此集合非空时 next[j]= 0 其他情况 -1 当j=0 计算t=“abcabaa”的next[j],要求写出具体的推算步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值