目录
[4] 掌握线性表、栈和队列的应用,理解各种线性结构之间的关系。
[5] 熟悉串的逻辑结构和典型存储方式,理解串的主要运算。串下标的起始位置。
[2] 熟练掌握二叉树的各种存储结构的实现,各存储结构的特点及适用范围。
[6] 了解最优树的特性,掌握建立最优树和哈夫曼编码的方法。
考纲来自于重庆邮电大学研招网:
@20230324 提醒,此部分仅是我个人错题,望各位酌情参考,以制作自己的错题集为优先
一、概述
[1] 熟悉数据结构相关术语的含义,掌握基本概念。
[2] 掌握数据结构中逻辑结构、存储结构以及两者之间关系。
[3] 了解抽象数据类型的定义和表示方法。
[4] 掌握计算语句频度和估算算法时间复杂度的方法。
错题整理
1.1 以下属于逻辑结构的是(王道P3T3)12345 答案:C
- A.顺序表 B.哈希表 C.有序表 D.单链表
1.2 以下与数据的存储结构无关的术语是(王道P3T4)12345 答案:D
- A.循环队列 B.链表 C.哈希表 D.栈
1.3 以下关于数据结构的说法中正确的是(王道P3T5)12345 答案:A
- A.数据的逻辑结构独立于其存储结构
- B.数据的存储结构独立于其逻辑结构
- C.数据的逻辑结构唯一决定其存储结构
- D.数据结构仅由其逻辑结构和存储结构决定
1.4 链式存储设计时,结点内的存储单元地址(王道P4T7)12345 答案:A
- A.一定连续 B.一定不联系 C.不一定连续 D.部分连续,部分不连续
1.5 一个算法应该是(王道P6T1)12345 答案:B
- A.程序 B.问题求解步骤的描述 C.要满足五个基本特征 D.A和C
1.6 已知两个长度分别为m和n的升序链表,若将他们合并为长度为m+n的一个降序链表,则最坏情况的时间复杂度是(王道P7T10)12345 答案:D
A.O(n) B.O(mn) C.O(min{m,n}) D.O(max{m,n})
1.7 分析以下算法时间复杂度(王道P8T02③)12345 答案:O(n^3)
for(i=1; i<=n; i++) for(j=1; j<=i; j++) for(k=1; k<=j; k++) x++
1.8 当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为__参数,以节省参数值的传输时间和存储参数的空间(期末P1T5)12345 答案:B
- A.整型 B.引用型 C.指针型 D.常值引用型
1.9 与数据元素本身的形式、内容、相对位置、个数无关的是数据的(期末P20T3)12345 答案:B
A.存储结构 B.逻辑结构 C.算法 D.操作
1.10 下列程序运行的时间复杂度为(期末P20T7)12345 答案:A
- A.O(n^1/2) B.O((2n)^1/2) C.O(n) D.O(n^2)
i=0, s=0; while(s<n) {i++; s=s+i;}
1.11 计算fact(n)被调用的次数(期末P21T12)12345 答案:B
- A.n B.n+1 C.n+2 D.n-1
int fact(int n){ if(n<=0) return 1; else return n*fact(n-1); }
1.12 算法指的是(期末P20T2)12345 答案:D
- A.计算机程序 B.解决问题的计算方法 C.排序算法 D.解决问题的有限运算序列
1.13 以下哪一个术语与数据的存储结构无关(模拟2)12345 答案:A
- A.有序树 B.哈希表 C.线索树 D.双向链表
二、线性结构——线性表、栈、队列和串
《数据结构(C语言版》学习笔记02 线性表_学生罢了的博客-优快云博客_数据结构c语言版笔记设计线性表的概念、操作、实现原理,具体说来,又分为顺序表、单链表(有头结点)、单链表(无头结点)、双向链表、循环单链表、静态链表和双循环链表(简述原理),另外还涉及不同表的特点及对比,由浅入深,比较全面。......https://blog.youkuaiyun.com/vv0610_/article/details/125472116《数据结构(C语言版》学习笔记03 栈与队列_学生罢了的博客-优快云博客栈与队列,包含顺序栈、链栈、顺序队列、链队列,并且涉及不同的初始条件和有无头结点的实现方法介绍。最后分析栈应用中的括号匹配和中缀后缀表达式相关算法和思路。
https://blog.youkuaiyun.com/vv0610_/article/details/126649090《数据结构(C语言版》学习笔记05 串_学生罢了的博客-优快云博客串的基本实现,包括定长顺序存储、堆分配存储、块链存储的介绍,以及KMP算法实现、next数组求法、优化KMP算法实现等。
https://blog.youkuaiyun.com/vv0610_/article/details/126696025
[1] 理解线性表的逻辑结构定义。
[2] 熟悉抽象数据类型定义方式。
[3] 熟练掌握线性结构的顺序和链式存储结构。
[4] 掌握线性表、栈和队列的应用,理解各种线性结构之间的关系。
[5] 熟悉串的逻辑结构和典型存储方式,理解串的主要运算。
[6] 熟练掌握在顺序和链式存储结构上实现相关基本操作。
错题整理
2.1 含有n个结点的顺序表中,在任一结点前插入一个结点所需移动结点的平均次数为(笔记P37T3)12345 答案:n/2
2.2 二维数组M[i][j]中每个元素的长度是3B,行下标i从0~7,列下标j从0~9,从首地址IN开始连续存放在存储器中。若按行优先方式存放,元素M[7][6]的起始地址为(笔记P38T4)12345 答案:IN+228
2.3 编写算法将带头结点的单链表就地逆置(辅助空间复杂度为O(1))(笔记P38T6)12345 答案:略(见最终篇)2.4 在一个长度为n的顺序表中删除第i(1<=i<=n)个元素时,需向前移动多少个元素(王道P17T8)12345 答案:C
- A.n B.i-1 C.n-i D.n-i+1
2.5 下列关于线性表的说法中,正确的是(王道P37T4)12345 答案:D
- Ⅰ顺序存储方式只能用于存储线性结构
- Ⅱ取线性表的第i个元素的时间与i的大小有关
- Ⅲ静态链表需要分配较大的连续空间,插入和删除不需要移动元素
- Ⅳ在一个长度为n个有序单链表中插入一个新结点并仍保持有序的时间复杂度为O(n)
- Ⅴ若用单链表来表示队列,则应该选用带尾指针的循环链表
- A.Ⅰ、Ⅱ B.Ⅰ、Ⅲ、Ⅳ、Ⅴ C.Ⅳ、Ⅴ D.Ⅲ、Ⅳ、Ⅴ
2.6 给定有n个元素的一维数组,建立一个有序单链表的最低时间复杂度是(王道P37T7)12345 答案:D
- A.O(1) B.O(n) C.O(n^2) D.O(nlog2n)
2.7 将长度为n的单链表链接在长度为m的单链表后面,其算法的时间复杂度采用大O形式表示应该是(王道P37T8)12345 答案:C
- A.O(1) B.O(n) C.O(m) D.O(n+m)
2.8 有六个元素 6 5 4 3 2 1 依次进栈,下列不是合法出栈序列的是(笔记P51T1)12345 C
- A.543612 B.453126 C.346521 D.234156
2.9 设数组A[m]为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行入队操作时修改指针的语句是(笔记P53T3)12345 答案:C
- A.sq.front=(sq.front+1)%m
- B.sq.front=(sq.front+1)%(m+1)
- C.sq.rear=(sq.rear+1)%m
- D.sq.rear=(sq.rear+1)%(m+1)
2.10 若进栈序列为abc,则通过出栈可能得到的abc的不同排列个数为(笔记P52T6)12345 答案:B
- A.4 B.5 C.6 D.7
2.11 一个栈的入栈序列为 1,2,3,...,n,出栈序列是 P1,P2,P3,...,Pn。若P2=3,则P3可能取值的个数为(王道P69T25)12345 答案:C
- A.n-3 B.n-2 C.n-1 D.无法确定
2.12 下列关于栈的叙述中,错误的是(王道P69T26)12345 答案:C
- Ⅰ采用非递归方式重写递归程序时必须使用栈
- Ⅱ函数调用时,系统要用栈保存必要的信息
- Ⅲ只要确定了入栈次序,即可确定出栈次序
- Ⅳ栈是一种受限的线性表,允许在其两端进行操作
- A.仅Ⅰ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅰ、Ⅲ、Ⅳ D.仅Ⅱ、Ⅲ、Ⅳ
2.13 最适合用作链队列的链表是(王道P84T9)12345 答案:B
- A.带队首指针和队尾指针的循环单链表
- B.带队首指针和队尾指针的非循环单链表
- C.只带队首指针的非循环单链表
- D.只带队首指针的循环单链表
2.14 假设循环单链表表示的队列长度为n,队头固定在链表尾,若只设头指针,则进队操作的时间复杂度为(王道P84T14)12345 答案:A
- A. O(n) B. O(1) C. O(n^2) D. O(nlog2n)
2.15 循环队列放在一维数组A[0...M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳 M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是(王道P85T18)12345 答案:A
- A.队空:end1==end2; 队满:end1==(end2+1)mod M
- B.队空:end1==end2; 队满:end2==(end1+1)mod(M-1)
- C.队空:end2==(end1+1)mod M; 队满:end1==(end2+1)mod M
- D.队空:end1==(end2+1)mod M; 队满:end2==(end1+1)mod(M-1)
2.16 设有如下图所示的火车车轨,入口到出口之间有n条轨道,列车的行进方向均为从左至右,列车可驶入任意一条轨道。现有编号为1~9的9列列车,驶入的次序依次 8,4,2,5,3,9,1,6,7。若期望驶出的次序依次为1~9,则n至少是(王道P85T19)12345 答案:C
- A.2 B.3 C.4 D.5
2.17 已知字符串S为'abaabaabacacaabaabcc',模式串t为'abaabc'。采用KMP算法进行匹配,第一次出现“失配”(S[i]!=t[j])时,i=j=5,则下次开始匹配时,i和j的值分别是(王道P119T8)12345 答案:C
- A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=2
2.18 设主串T='abaabaabcabaabc',模式串S='abaabc',采用KMP算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是(王道P119T9)12345 答案:B
- A.9 B.10 C.12 D.15
2.19 一个递归的问题既可以用递归过程求解,也可以用非递归过程求解,单从运行时间来看,通常递归过程比非递归过程(期末P22T32)12345 答案:B
- A.较快 B.较慢 C.相同 D.不定
2.20 单链表的存储密度(真题2012)12345 答案:C
- A.大于1 B.等于1 C.小于1 D.不能确定
2.21 采用特殊字符作为结尾的顺序存储方式存储,若两个串的长度分别为m和n,则两个串相等与否的比较运算的时间复杂度为_____(真题2014)12345 答案:O(min{m,n})
2.22 设栈S和队列Q的初始状态皆为空,元素a1,a2,...,a7依次通过一个栈,一个元素出栈后立即进入队列Q,若7个元素的出队列顺序为a3,a5,a4,a7,a6,a2,a1,则栈S至少应该容纳___个元素(真题2014)12345 答案:4
2.23 线性表采用链表存储时,其地址(真题2015)12345 答案:D
- A.必须连续 B.部分地址必须连续 C.一定是不连续的 D.连续不连续都可以
2.24 六个元素按6、5、4、3、2、1的顺序进栈,下列哪个是错误的(真题2018)12345 答案:C
A.543612 B.453126 C.346521 D.2341562.25 有一个空栈,栈顶指针为1000H(16进制),现有输入序列为a,b,c,d,e。经过 PUSH, PUSH, POP, PUSH, POP, PUSH, PUSH 之后,每个数据占4个字节,栈顶指针是___H。(真题2019)12345 答案:100C
2.26 Let Q denote a queue containing sixteen numbers and S be an empty stack. Head(Q) returns the element at the head of the queue Q without removing it from Q. Similarly Top(S) returns the element at the top of S without removing it from S. Consider the algorithm given below.
while Q is not empty do if S is empty or Top(S)<=Head(Q) then x=DeQueue(Q); Push(S, x); else x=Pop(S); EnQueue(Q,x); end end
The maximum possible number of the iterations of the while loop in the algorithm is ___(真题2021)12345 答案:256
2.27 下面哪个算法用到了队列(模拟1)12345 答案:C
- A.括号匹配 B.迷宫求解 C.页面替换 D.递归
2.28 串S='software',其子串数目为(模拟1)12345 答案:B
- A.8 B.37 C.36 D.9
2.29 已知输入序列为abcd经过输出受限的双向队列后能得到的输出序列为(模拟1)12345 答案:B
- A.dacb B.cadb C.dbca D.都不对
2.30 已知
U='xyxyxyxxyxy', t='xxy'
ASSIGN(S,U)
ASSIGN(V, SUBSTR(S, INDEX(S, t), LEN(t)+1)
ASSIGN(m, 'ww')
求REPLACE(S, V, m)=_____(模拟1)12345 答案:xyxyxywwy
2.31 循环队列的引入,是为了克服___(模拟1)12345 答案:假溢出
2.32 带有头结点的双循环链表为空的条件是___(模拟5)12355 答案:L->next==L
三、数组和广义表
[1] 掌握数组的逻辑特征与存储方式。
[2] 掌握矩阵的压缩存储方式及其特点。
[3] 理解广义表的逻辑特征和存储方式。
[4] 掌握广义表的基本操作。
错题整理
3.1 已知广义表 L=((x,y,z),a,(u,t,w)),从L中取出原子项t的运算是(笔记P58T1)12345 答案:D
- A. head(tail(tail(L))) B.tail(head(head(tail(L))))
- C.head(tail(head(tail(L)))) D.head(tail(head(tail(tail(L)))))
3.2 在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为____域和____域(期末P2T2)12345 答案:值、子表指针
3.3 对广义表L=((a,b), (c,d), (e,f))执行操作tail(tail(L))的结果是(期末P23T45)12345 答案:B
- A.(e,f) B.((e,f)) C.(f) D.()
四、树和二叉树
[1] 熟练掌握二叉树的基本性质。
[2] 熟练掌握二叉树的各种存储结构的实现,各存储结构的特点及适用范围。
[3] 熟练掌握二叉树各种遍历策略的递归算法。
[4] 熟练掌握基于遍历策略的二叉树操作及应用。
[5] 树(森林)与二叉树的关系(存储)
[6] 了解最优树的特性,掌握建立最优树和哈夫曼编码的方法。
错题整理
4.1 在二叉树结点的先序、中序和后序序列中,所有叶子结点的先后顺序(笔记P80T3)12345 答案:B
- A.都不相同 B.完全相同 C.先序和中序相同,后序不同 D.中序和后序相同,先序不同
4.2 一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到多少个不同的码字(笔记P81T7)12345 答案:B
- A.107 B.108 C.214 D.215
4.3 若将关键字1,2,3,4,5,6,7依次插入到初始为空的平衡二叉树T中,则T中平衡因子为0的分支结点的个数是(笔记P81T8)12345 答案:A
- A.3 B.2 C.1 D.0
4.4 树的路径长度是从树根到每个结点的路径长度的(王道P127T3)12345 答案:A
- A.总和 B.最小值 C.最大值 D.平均值
4.5 假定一棵度为3的树中,结点数为50,则其最小高度为(王道P127T6)12345 答案:C
- A.3 B.4 C.5 D.6
4.6 下列关于二叉树的说法中正确的是(王道P132T1)12345 答案:C
- A.度为2的有序树就是二叉树
- B.含有n个结点的二叉树的高度为 floor(log2n)+1
- C.在完全二叉树中,若一个结点没有左孩子,则它必是叶结点
- D.在任意一棵非空二叉排序树中,删除某结点后又将其插入,所得二叉排序树与删除前相同
4.7 设高度为h的二叉树上只有度为0和2的结点,则此类二叉树中所包含的结点数至少为(王道P133T4)12345 答案:B
- A.h B.2h-1 C.2h+1 D.h+1
4.8 设二叉树有2n个结点,且m<n,则不可能存在(王道P133T6)12345 答案:C
- A.n个度为0的结点 B.2m个度为0的结点 C.2m个度为1的结点 D.2m个度为2的结点
4.9 设二叉树只有度为0和2的结点,其结点个数为15,则该二叉树最大深度为(王道P133T8)12345 答案:C
- A.4 B.5 C.8 D.9
4.10 已知一棵完全二叉树的第6层(设根为第一层)有8个叶结点,则完全二叉树的结点个数最少是(王道P133T10)12345 答案:A
- A.39 B.52 C.111 D.119
4.11 已知一棵完全二叉树的第6层(设根为第一层)有8个叶结点,则完全二叉树的结点个数最多是(王道P134T20)12345 答案:C
- A.39 B.52 C.111 D.119
4.12 一棵有124个叶子结点的完全二叉树,最多有多少个结点(王道P133T14)12345 答案:B
- A.247 B.248 C.249 D.250
4.13 对于一棵高度为5且有10个结点的二叉树,若采用顺序存储结构保存,每个结点占1个存储单元,则存放该二叉树需要的存储单元数量至少是(王道P134T23)12345 答案:A
- A.31 B.16 C.15 D.10
4.14 利用二叉链表存储森林时,根结点的右指针是(王道P173T2)12345 答案:D
- A.指向最左兄弟 B.指向最右兄弟 C.一定为空 D.不一定为空
4.15 设F是一个森林,B是由F变换来的二叉树。若F中有n个非终端结点,则B中右指针为空的结点有多少个(王道P173T6)12345 答案:C
- A.n-1 B.n C.n+1 D.n+2
4.16 将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是(王道P174T11)12345 答案:B
- Ⅰ父子关系 Ⅱ兄弟关系 Ⅲu的父结点和v的父结点是兄弟关系
- A.只有Ⅱ B.Ⅰ和Ⅱ C.Ⅰ和Ⅲ D.Ⅰ、Ⅱ和Ⅲ
4.17 已知一棵树有2011个结点,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数是(王道P174T12)12345 答案:D
- A.115 B.116 C.1895 D.1896
4.18 将森林F转换为对应的二叉树T,F中叶结点的个数等于(王道P174T13)12345 答案:C
- A.T中叶结点的个数 B.T中度为1的结点个数 C.T中左孩子指针为空的结点个数 D.T中右孩子指针为空的结点个数
4.19 若森林F有15条边、25个结点,则F包含树的个数是(王道P174T14)12345 答案:C
- A.8 B.9 C.10 D.11
4.20 若度为m的哈夫曼树中,叶子结点个数为n,则非叶结点个数为(王道P185T7)12345 答案:C
- A.n-1 B.floor(n/m)-1 C.(n-1)/(m-1) D.ceil(n/(m-1))-1
4.21 下列选项给出的是从根分别到达两个叶结点路径上的权值序列,属于同一棵哈夫曼树的是(王道P186T13)12345 答案:D
- A.24,10,5/24,10,7 B.24,10,5/24,12,7 C24,10,10/24,14,11 D.24,10,5/24,14,6
4.22 已知二叉树中叶子结点数为12,仅有一个孩子的结点数为5,则总结点数是___(期末P9T4)12345 答案:28
4.23 设高度为h的二叉树只有度为0和2的结点,则此类二叉树中所包含的结点数至少为(期末P23T54)12345 答案:B
A.2h B.2h-1 C.2h+1 D.h+1
4.24 一棵有124个叶子结点的完全二叉树,最多有___个结点(真题2012)12345 答案:2484.25 具有n个结点的满二叉树,其叶子结点有___个(真题2016)12345 答案:C
- A.n/2 B(n-1)/2 C.(n+1)/2 D.n/2-1
4.26 高度为k的完全二叉树至少有多少个结点(真题2018)12345 答案:A
- A.2^(k-1) B.2^k C.2^k-1 D.k
4.27 设完全二叉树的第 i=6 层有24个叶结点,则此树最多有___个结点(真题2020)12345 答案:79
4.28 若X是中序线索二叉树中一个有左孩子的结点,且X不为根,则X的前驱为(真题2021)12345 答案:C
- A.X的双亲 B.X的右子树中最左的结点 C.X的左子树中最右的结点
4.29 二叉树线索化后无法解决的问题是(模拟2)12345 答案:D
- A.先序线索二叉树中求先序后继 B.中序...中序后继
- C.中序...中序前驱 D.先序...先序前驱
4.30 下列二叉树遍历中,仍需要栈的支持的是(模拟2)12345 答案:D
- A.中序 B.先序 C.所有 D.后序
下篇: