【数据结构】数据结构典中典的题

数据结构典中典的题

一、绪论

1.以下关于数据结构的叙述中,正确的是________。 

A.数据的逻辑结构独立于该数据的存储结构; 
B.数据的存储结构独立于该数据的逻辑结构; 
C.数据的逻辑结构唯一决定了该数据的存储结构; 
D.数据结构包括数据的逻辑结构和存储结构两个部分。 
2. 计算机内部数据处理的基本单元是(          )。
 A. 数据   B. 数据元素 		C. 数据		D. 数据库 
3. 以下说法正确的是(   )。 
    A. 数据元素是数据的最小单位 
    B. 数据项是数据的基本单位  
    C. 数据结构是带有结构的各数据项的集合 
    D. 一些表面上很不相同的数据可以有相同的逻辑结构 
答案:
A  B D B A

二、线性表

1. 设有一个12×12的对称矩阵M,将其上三角部分的元素mi, j(1≤i≤j≤12)按行优先存入C语言的一维数组N中,
元素m6, 6在N中的下标是______ 

A.50		B.51 		C.55		D.66 
2. 以下关于线性表的叙述中,错误的是_____。 

    A.线性表采用顺序存储结构,必须占用一片地址连续的存储单元; 
    B.线性表采用顺序存储结构,便于在表中进行插入和删除操作; 
    C.线性表采用链式存储结构,不必占用一片地址连续的存储单元; 
    D.线性表采用链式存储结构,便于在表中进行插入和删除操作。 
3. 以下关于线性表错误的是(    )。 

    A.线性表元素个数有限 
    B.线性表可以顺序表示和链式表示 
    C.数组是线性表 
    D.可以给线性表中每个元素一个序号 
4. 设有一个 10 阶的对称矩阵 A,采用压缩存储方式,以行序为主序存储其下三角,a1 1为第一个
元素,  其首存储地址为 1,  每个元素占 1 个地址空间,  则 a 85 的地址为(            )。 

 A. 32              B. 33              C. 34                D. 40 
5. 线性表是具有 n 个  (            )的有限序列。 

	A.  表元素   	B.  字符  	C.  数据元素 		D.  数据项 
6. 在顺序表(长度为 127)中插入一个元素平均要移动(   )个元素。

	A. 8      B. 63.5        C. 63      D. 7 
7. 在需要频繁的增、删非零元素时,稀疏矩阵最好采用_____存贮结构。

A. 三元组表 	B. 邻接表		C. 十字链表		D. 广义表
答案:
A B C B C
B C

三、栈与队列

1. 现有队列Q与栈S,初始时Q中的元素依次是1, 2, 3, 4, 5, 6(1在队头),S为空。若仅允许下列3种操作:
①出队并输出出队元素;②出队并将出队元素人栈;③出栈并输出出栈元素,则不能得到的输出序列是______
A.1,2,5,6,4,3 		B.2,3,4,5,6,1		C.3,4,5,6,1,2		D.6,5,4,3,2,1  
2. 顺序栈 s 的 GetTop(s, e)操作是用 e 返回 s 的栈顶元素,则下列(          )是正确的操作。 

A. e=*(s.top)  	 B. e=*(s.top-1)   	C. e=*(--s.top)  	D. e=s.top-1 
3. 若用单链表来表示队列,最适合队列操作的是(          )。 

A. 带尾指针的非循环队列  	B. 带尾指针的循环链表 
C. 带头指针的非循环链表  	D. 带头指针的循环链表 
4. 以下4种形式的链表中,最适合作为队列的只有一个指针的链表结构的是_______。 

A.单向链表                B.单向循环链表 
C.双向链表                D.双向循环链表 
5. 用带头结点的单链表存储队列,其队头指针指向头结点,队尾指针指向队尾结点,
则在进行出队时,___________

A. 仅修改队头指针        	B. 仅修改队尾指针 
C. 对头、尾指针都要修改     D. 对头、尾指针都可能要修改
6. 任何一个递归过程都可以转换成非递归过程。(  )
答案:
C A B B D
√ 

四、树与二叉树

1. 若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其编历序列与 T 的后根
遍历序列相同的是______ 
A.先序遍历	B.中序遍历	C.后序遍历	D.按层遍历 
2. 对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值
是______ 
A.56	B.57	C.58	D.60
3. 在任意一棵非空平衡二叉树(AVL 树)T1 中,删除某结点 v 之后形成平衡二叉树 T2 ,再
将 v 插入 T2 形成平衡二叉树 T3 。下列关于 T1 与 T3 的叙述中,正确的是______ 

(I)  若 v 是 T1 的叶结点,则 T1 与 T3 可能不相同 
(II) 若 v 不是 T1 的叶结点,则 T1 与 T3 一定不相同 
(III)若 v 不是 T1 的叶结点,则 T1 与 T3 一定相同 
A.仅Ⅰ	 B.仅Ⅱ 	C.仅Ⅰ、Ⅱ	D.仅Ⅰ、Ⅲ 
4. 设一棵非空完全二叉树T的所有叶结点均位于同一层,且每个非叶结点都有2个子结点。若T有k个叶结点,则T的结点总数是______
A.2k-1 		B.2k 		C.𝑘^2 		D.2^𝑘 − 1 
5. 已知字符集{a, b, c, d, e, f},若各字符出现的次数分别为  6, 3, 8, 2, 10, 4,则对应字符集中 
各字符的哈夫曼编码可能是______

A.00,1011,01,1010,11,100 
B.00,100,110,000,0010,01
C.10,1011,11,0011,00,010
D.0011,10,11,0010,01,000
6. 已知二叉排序树如下图所示,元素之间应满足的大小关系是______。

7. 某二叉树有两个节点 p 与 q,对该树进行中序遍历时,p 在 q 的前面,则(    )。 
A.	p 是 q 的祖先 
B.	q 是 p 的祖先 
C.	p 在 q 左边 
D.	q 在 p 左边 
8. 任何一棵二叉树 T,  如果度为 1 的结点数为 2,度为 0 结点数为 11,其分支数为  (          )

A. 23   	B. 22   	C. 24		D. 21 
9. 设哈夫曼树中的叶子结点总数为 m,若用二叉链表作为存储结构,则该哈夫曼树中总共有
(            )个空指针域。 

 A. 2m-1  		B. 2m  			C. 2m+1  			D. 4m 
10. 编写一个算法求二叉树中叶子结点的个数
11. 对于一个线索化的二叉树,其中 P 所指结点无左子树的充要条件为________。                
12. 二叉排序树的查找效率与二叉树的(        )有关。

A. 高度        B. 树型    C. 结点的多少           D. 结点的位置
13. Huffman 树的结点个数不能是偶数。(   ) 
14. 二叉树的所有叶子结点在前序和后序遍历序列中皆以相同的相对位置出现。(   ) 
15. 给定关键字序列 45,24,53,27,93,12,30。 
(1)请按照上述序列构建一颗二叉排序树。
(2)计算等概率情况下查找成功的平均查找长度。 
(3)计算等概率情况下查找不成功的平均查找长度。 
16. 若完全二叉树的结点总数为 1001,则度为 1 的结点有(   )个。

 	A. 0      B. 1        C. 500         D. 501    
17. 具有5层结点的平衡二叉树至少有(  )个结点。
A. 10  		B. 12  		C. 15 		D. 17
18. 若X是二叉中序线索树一个有左孩子的结点,且X不为根,则X的前驱为(   )。

A. X的左子树中最右边的结点
B. X的左子树中最右边的叶结点
 19. 二叉树先序遍历 x 在 y 之前,后序遍历 x 在 y 之后,则 x 是 y 的(   )。
 
  	A. 左兄弟       B. 右兄弟       C. 祖先       D. 后裔 
20. 二叉树在线索化后,仍不能有效求解的问题是(   )

 A. 前序线索二叉树中求前序后继   B. 中序线索二叉树中求中序后继  
 C. 中序线索二叉树中求中序前驱   D. 后序线索二叉树中求后序后继
答案:
B C A A A
C C B B X
p->ltag=1 B √  √ 

15.解析:
(2)成功:ASL=(1+2+2+3+3+3+4)/7=18/7
(3)不成功:ASL=(2+3*5+4*2)/8=25/8 
16. A 
17. B
解析:F(0) = 0
     F(1) = 1
     F(2) = 2
     F(3) = 4
     F(4) = 7
     F(5) = 12
     F(6) = 20
18. A  
19. C
20. D
解析:先序遍历(中左右)、中序遍历(左中右)的最后访问的节点都是左或右叶节点,叶节点是没有子树的,所以两个指针域空出来了,可以存放线索指针。但是后续遍历(左右中),最后访问的是子树的根节点,而子树根节点的两个指针域都指向子树了,所以不能空出来存放线索信息。

五、图

六、查找

七、排序

1. 选择一个排序算法时,除算法的时空效率外,下列因素中,还需要考虑的是______ 
Ⅰ.数据的规模 	Ⅱ.数据的存储方式 
Ⅲ.算法的稳定性 Ⅳ.数据的初始状态 
A.仅Ⅲ 	 B.仅Ⅰ、Ⅱ 	C.仅Ⅱ、Ⅲ、Ⅳ	D.Ⅰ、Ⅱ、Ⅲ、Ⅳ 
2. 排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。
下列序列中, 不可能是快速排序第二趟结果的是______
A.5,2,16,12,28,60,32,72 
B.2,16,5,28,12,60,32,72 
C.2,12,16,5,28,32,72,60 
D.5,2,12,28,16,32,72,60 
3. 设外存上有 120 个初始归并段,进行 12 路归并时,为实现最佳归并,需要补充的虚段个数是______ 
A.1		B.2 	C.3		 D.4 
4. 对初始数据序列(8, 3, 9, 11, 2, 1, 4, 7, 5, 10, 6)进行希尔排序。若第一趟排序结果为(1, 
3, 7, 5, 2, 6, 4, 9, 11, 10, 8),第二趟排序结果为(1, 2, 6, 4, 3, 7, 5, 8, 11, 10, 9),则两趟排序采用的  增量(间隔)依次是______。 

A.3,1 		B.3,2 		C.5,2		D.5,3 
5. 在将数据序列(6, 1, 5, 9, 8, 4, 7)建成大根堆时,正确的序列变化过程是______。

A. 6,1,7,9,8,4,5  →  6,9,7,1,8,4,5  →  9,6,7,1,8,4,5  →  9,8,7,1,6,4,5 
B. 6,9,5,1,8,4,7  →  6,9,7,1,8,4,5  →  9,6,7,1,8,4,5  →  9,8,7,1,6,4,5
C. 6,9,5,1,8,4,7  →  9,6,5,1,8,4,7  →  9,6,7,1,8,4,5  →  9,8,7,1,6,4,5
D. 6,1,7,9,8,4,5  →  7,1,6,9,8,4,5  →  7,9,6,1,8,4,5  →  9,7,6,1,8,4,5  →  9,8,6,1,7,4,5
6. 基数排序的时间复杂度和(    )无关。 
A.基数的选择 	B.数组的最大元素 		C.数组长度		D.数组是否排序
7. 下面的序列中, (          )是堆。

A. 12, 36, 27, 65, 40, 34, 98, 81, 73, 55, 49 
B. 12, 36, 27, 65, 40, 14, 98, 81, 73, 55, 49
C. 12, 36, 27, 20, 40, 34, 98, 81, 73, 55, 49 
D. 12, 36, 35, 65, 40, 34, 98, 81, 73, 55, 49 
8. 在所有排序方法中,关键字的比较次数与记录的初始排列无关的是(        )

A. 希尔排序    B. 冒泡排序      C. 直接插入排序    D.  直接选择排序 
9. 平衡二叉树的平均查找长度是(            )。 

 A. O(n^2)  	 B. O(nlogn)        C.  O(n)       D. O(logn) 
10. 快速排序,堆排序,归并排序的空间复杂度从优到劣依次是_____。 
11. 直接插入排序在最好情况下的时间复杂度为(        )。

A. O(logn)      B.O(n)      C.O(nlogn)    D.O(n*n)
12. 给定无序序列 39,35,70,87,81,7,27,58。

(1)将上述整数构建一个堆(大顶堆)。 
(2)按照堆排序算法,写出前三趟堆排序的结果。 
(3)堆排序的时间和空间复杂度分别是多少? 
13. 在快速排序过程中,下列结论正确的是(   )。

 A. 左、右两个子表都已各自排好序  B. 左边的元素都不大于右边的元素
 C. 左边子表长度小于右边子表长度  D. 左、右两边元素的平均值相等 
14. 具有 12 个记录的序列,采用冒泡排序最少的比较次数是________。
15. 已知关键字序列(40,35,61,87,72,16,25,50)

  (1)写出用快速排序方法升序排列该序列一趟后的结果 
  (2)写出用堆排序进行升序排列时的初始堆 
  (3)写出堆排序 1 趟以后(交换与调整之后)的结果 
  (4)写出 1 趟冒泡排序后的结果 
  (5)写出 1 趟归并排序后的结果 
16. 采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是(   )。

    A.递归次数与初始数据的排列次序无关
    B.每次划分后,先处理较长的分区可以减少递归次数
    C.每次划分后,先处理较短的分区可以减少递归次数
    D.递归次数与每次划分后得到的分区的处理顺序无关
17. 若数据元素序列 {11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序后的结
果,则该排序算法只能是(   )。
	A.起泡排序		B.插入排序		C.选择排序		D.二路归并排序
18.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:
第一趟排序结果:2,12,16,5,10,88
第二趟排序结果:2,12,5,10,16,88
第三趟排序结果:2,5,10,12,16,88
则采用的排序方法可能是(   )。

A.起泡排序		B.希尔排序		C.归并排序		D.基数排序
19.对同一待排序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是(   )。

    A.排序的总趟数		B.元素的移动次数
    C.使用辅助空间的数量	  D.元素之间的比较次数
20. 已知序列25,13,10,12,9是大根堆,在序列尾部插入新元素18,将其再调整为大根堆,
调整过程中元素之间进行的比较次数是()。

	A.1		B.2		C.4		D.5
 答案: 
 D D B D A
 D A D D X
 B 
 12. 
 (1) 初始堆:87  81  70  58  39  7  27  35
 (2) 第 1 趟:81  58  70  35  39  7  27  87 
     第 2 趟:70  58  27  35  39  7  81  87 
     第 3 趟:58  39  27  35  7  70  81  87 
 (3) 时间复杂度:O(nlogn) 空间复杂度:O(1) 
13.B   14.11

15.解析: 
(1)快速排序一趟后的结果:25  35  16  40  72  87  61  50 
(2)堆排序进行升序初始堆:87  72  61  50  40  16  25  35 
(3)堆排序 1 趟以后的结果:72  50  61  35  40  16  25  87 
(4)1 趟冒泡排序后的结果:35  40  61  72  16  25  50  87 
(5)1 趟归并排序后的结果:35  40  61  87  16  72  25  50 
16. D   17. B  	18.A  	19.D 		20.B

posted @ 2021-08-28 22:19  梁君牧  阅读(3408)  评论(0编辑  收藏  举报