数据结构复习

临近期末整理的一些复习题,仅供参考,切莫作为期末考试依据!!!

选择题

  1. 数组A[1..5,1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为:

    A.1120

    B.1125

    C.1140

    D.1145
    解析:1000 + 4 * 6 * 5 + 5 * 5 = 1145 (每个元素占5个单元)

  2. 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度为:

    A.O(1), O(1)

    B.O(1), O(N)

    C.O(N), O(1)

    D.O(N), O(N)
    解析:这里说的增加结点是插入结点

  3. 在N个结点的顺序表中,算法的时间复杂度为O(1)的操作是:

    A.访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N)

    B.在第i个结点后插入一个新结点(1≤i≤N)

    C.删除第i个结点(1≤i≤N)

    D.将N个结点从小到大排序

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

    A.双链表

    B.单循环链表

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

    D.顺序表

  5. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址

    A.必须是连续的

    B.连续或不连续都可以

    C.部分地址必须是连续的

    D.一定是不连续的

  6. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?

    A.单链表

    B.仅有尾指针的单循环链表

    C.仅有头指针的单循环链表

    D.双链表

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

    A.单链表

    B.双链表

    C.单循环链表

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

  8. 将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?

    A.单链表

    B.单循环链表

    C.带尾指针的单循环链表

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

  9. 线性表L在什么情况下适用于使用链式结构实现?

    A.需不断对L进行删除插入

    B.需经常修改L中的结点值

    C.L中含有大量的结点

    D.L中结点结构复杂

  10. 设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是:

    A.1

    B.2

    C.3

    D.4

  11. 假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为:

    A.2

    B.3

    C.4

    D.5

  12. 若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?

    A.b c a e f d

    B.c b d a e f

    C.d c e b f a

    D.a f e d c b

  13. 设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?

    A.3 2 1 5 4

    B.5 1 2 3 4

    C.4 5 1 3 2

    D.4 3 1 2 5

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

    A.2 3 4 1 5 6

    B.3 4 6 5 2 1

    C.5 4 3 6 1 2

    D.4 5 3 1 2 6

  15. 若一个栈的入栈序列为1、2、3、…、N,输出序列的第一个元素是i,则第j个输出元素是:

    A.i−j−1

    B.i−j

    C.j−i−1

    D.不确定

  16. 将5个字母ooops按此顺序入栈,则有多少种不同的出栈顺序可以仍然得到ooops

    A.1

    B.3

    C.5

    D.6

  17. 从栈顶指针为ST的链栈中删除一个结点且用X保存被删结点的值,则执行:

    A.X= ST->data;

    B.X= ST; ST = ST->next;

    C.X= ST->data; ST = ST->next;

    D.ST = ST->next; X= ST->data;

  18. 若栈采用顺序存储方式存储,现两栈共享空间V[m]top[i]代表第ii=1或2)个栈的栈顶;栈1的底在V[0],栈2的底在V[m-1],则栈满的条件是:

    A.|top[2]-top[1]|==0

    B.top[1]+top[2]==m

    C.top[1]==top[2]

    D.top[1]+1==top[2]

  19. 若用大小为6的数组来实现循环队列,且当前frontrear的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,frontrear的值分别为多少?

    A.2和0

    B.2和2

    C.2和4

    D.2和6

  20. 已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:

    A.39

    B.52

    C.111

    D.119
    解析:结点个数最多的时候,第6层有24个支结点,和8个叶结点。

  21. 在一个用数组表示的完全二叉树中,如果根结点下标为1,那么下标为17和19这两个结点的最近公共祖先结点在哪里(数组下标)? (注:两个结点的“公共祖先结点”是指同时都是这两个结点祖先的结点)

    A.8

    B.4

    C.2

    D.1

  22. 已知关键字序列(5,8,12,19,28,20,15,22)是最小堆(小根堆),插入关键字3,调整后得到的最小堆是:

    A.3,5,12,8,28,20,15,22,19

    B.3,5,12,19,20,15,22,8,28

    C.3,8,12,5,20,15,22,28,19

    D.3,12,5,8,28,20,15,22,19

  23. 将6、4、3、5、8、9顺序插入初始为空的最大堆(大根堆)中,那么插入完成后堆顶的元素为:

    A.3

    B.5

    C.6

    D.9

  24. 将10、12、1、14、6、5、8、15、3、9、7逐个按顺序插入到初始为空的最小堆(小根堆)中,然后连续执行两次删除最小元素操作(DeleteMin),此后堆顶的元素是什么?

    A.5

    B.6

    C.7

    D.9

  25. 已知图的邻接表如下图所示,则从顶点A出发按广度优先遍历的结果是( )。

    A.ABCDEF

    B.ABCEFD

    C.ABEFCD

    D.ABCEDF

  26. 使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,当顶点2被纳入确定顶点时,顶点1到顶点4的最短路径长度(dist[4])为( )。

    A.11

    B.14

    C.20

    D.正无穷 

  27. 下图的拓扑排序序列可能为( )。

    A.123456

    B.123564

    C.135246

    D.134256

  28. 以下叙述正确的是( )。

    A.最短路径一定是简单路径

    B.Dijkstra算法不适合有回路的带权图求最短路径

    C.Dijkstra算法不适合求任意两个顶点的最短路径

    D.Floyd算法求两个顶点的最短路径时,pathk-1一定是pathk的子集

  29. 具有n个顶点的有向图最多有( )条边

    A.n(n-1)/2

    B.n(n-1)

    C.n(n+1)

    D.n2

  30. 以下关于无向图邻接矩阵的说法中,错误的是( )

    A.无向图邻接矩阵是对称矩阵,同一条边表示了两次

    B.某个顶点的度等于邻接矩阵中该顶点对应行(或列)中1的个数

    C.判断两顶点v、u是否为邻接点仅需判断邻接矩阵中的对应元素是否为1

    D.某个顶点的度等于邻接矩阵中该顶点对应行与列中1的个数之和

填空题

  1. 在数据结构中,数据的逻辑结构分为 线性结构 和 非线性结构 。
  2. 链接存储的特点是利用 指针 来表示数据元素之间的逻辑关系。
  3. 数据结构由数据的 逻辑结构存储结构运算 三部分组成。
  4. 一个数据结构在计算机中的 映像 称为存储结构。
  5. 数据结构中评价算法的两个重要指标是 时间复杂度空间复杂度
  6. 栈的运算遵循 后进先出 的原则。
  7.  队列 又称为先进先出的线性表。
  8. 链接存储的特点是利用 指针 来表示数据元素之间的逻辑关系。
  9. 基于比较的排序方法,其最好的时间复杂度为 O(nlog2n) 。
  10. 假设二叉树的存储结构为二叉链表,在具有n个结点的二叉链表中(n>0),左孩子指针域和右孩子指针域的个数为 2n ,空指针域的个数为 n+1
  11. 在含有n个结点的树中,边数只能是 n-1
  12. 为了解决队列的假溢出现象,应采用 循环 队列。
  13. 图的深度优先搜索(DFS)使用了一种数据结构,这种数据结构是
  14. 时间复杂度为O(nlogn)的排序算法有归并排序、堆排序和 快速 排序。
  15. 设有一组关键字{9,1,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7 ,表长为10,用开放地址法的线性探测再散列方法解决冲突。要求:对该关键字序列构造哈希表。计算查找成功,失败的平均查找长度。 依次给出哈希表地址0--9单元的值。14192384|552027|。平均查找长度:ASLsucc = 16/8|2,ASLunsucc = 31/10|3.1.
  16. 在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要 n
  17. 如果无向完全图G中有66条边,则G的生成树有 11 条边。 (填写半角阿拉伯数字如1234567890,不要添加空格等其它字符)
  18. 设二维数组a[10][20],每个数组元素占用1个存储单元,若按列优先顺序存放数组元素,a[0][0]的存储地址为200,则a[6][2]的存储地址是多少?226
  19. 设栈S和队列Q的初始状态均为空,元素{1, 2, 3, 4, 5, 6, 7}依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是{2, 6, 5, 4, 7, 3, 1},则栈S的容量至少是:5
  20. 已知一棵完全二叉树的第5层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:47
  21. 若一个二叉树的叶子结点是某子树的中序遍历序列中的最后一个结点,则它必是该子树的 先序 遍历序列中的最后一个结点。
  22. 若以{4,5,6,7,8}作为叶子结点的权值构造哈夫曼树,则其带权路径长度是 69
  23. 二叉树的遍历

    观察下图所示的二叉树

    先序遍历的序列为: FBEHCDAGI

    后序遍历的序列为: ECHBAIGDF

    中序遍历的序列为: EBHCFADIG

  24. 普里姆算法

    请写出用普里姆算法从顶点A出发生成最小生成树每一步加入的边。

    (1) AB

    (2) BF

    (3) FD

    (4) FC

    (5) DE

    注:顶点 X 到 Y 的无向边简记作:XY 或 YX。

  25. 请写出用普里姆算法从顶点A出发生成最小生成树每一步加入的边。

    ####请务必输入大写字母 且 在英文状态下输入。前后不要有空格和其他多余的符号。
    ####边的表示实例:AB 或 BA,两者都可##

    1)AE

    2)ED

    3)DF

    4)FB

    5)DC

  26. 顺序队列在实现的时候,通常将数组看成是一个首尾相连的循环队列,这样做的目的是为避免产生 假溢出 现象。

  27. 哈夫曼编码

    某电文由8个字母组成,字母出现的频率如下表所示,请写出字母的哈夫曼编码。
     

    字母频率哈夫曼编码
    A71010
    B1900
    C210000
    D61001
    E3211
    F310001
    G2101
    H101011

    电文总长度(WPL)为 261 位。

  28. 关于顺序查找算法

    在下面的线性表中

    ( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
    

    若采用顺序查找算法,假设各元素的检索概率相同,则平均查找长度为 5.5

  29. 关于二分查找算法

    在下面的有序表中

    ( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
    

    若采用二分查找算法,假设各元素的检索概率相同,则平均查找长度为 2.9

  30. 将 {5, 2, 7, 3, 4, 1, 6} 逐个按顺序插入到初始为空的最小堆(小根堆)中。则该树的后序遍历结果为:5,4,3,7,6,2,1

主观题

  1. 请对下图的无向带权图:从顶点a开始按普里姆算法求其最小生成树,
    (1)写出顶点集
    (2)写出边集@

  2.  若采用以下的图示方式存储二叉树,请:
    (1)写出相应的类型定义。
    (2)写出基于你的类型定义的二叉树中序遍历算法。
    (3)写出调用函数的语句。







     

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 以下是利用这些关键字构造的二叉排序树: 53 / \ 17 61 \ \ 19 98 / \ 75 79 / / 63 46 \ 40 ### 回答2: 二叉排序树(Binary Search Tree,BST),也称二叉搜索树或二叉查找树,是一种特殊的二叉树,它的每个节点都包含一个关键字,且对于任意节点,其左子树中的所有关键字均小于该节点的关键字,其右子树中的所有关键字均大于该节点的关键字。利用给定的关键字序列可以构造如下的二叉排序树: ![image](https://cdn.luogu.com.cn/upload/image_hosting/qw52op7r.png) 首先,由于53是第一个关键字,它成为根节点。接下来,从左到右依次遍历每个关键字。17小于53,因此它成为左子树的根节点;19也小于53,但是它大于17,所以它成为17的右孩子;61大于53,因此它成为右子树的根节点;98大于61,因此它成为61的右孩子;75大于61,但是它小于98,所以它成为98的左孩子;79也是同理;63大于53,但是它小于61,所以它成为61的左孩子;46小于53,但是它大于17,所以它成为17的右子树的根节点;40小于53,但是它小于17,因此它成为17的左孩子。 最终,我们得到了上述的BST。这个树的中序遍历序列就是给定的关键字序列的有序排列。在这个树中搜索一个关键字的时间复杂度是O(log n),其中n是树中节点的总数。由于BST能够快速地进行搜索、插入和删除操作,因此它被广泛应用于各种算法和数据结构中。 ### 回答3: 二叉排序树又称为二叉搜索树,是一种特殊的二叉树,其中每个节点都包含一个关键字及其数据,并且满足以下性质: 1. 左子树中的所有节点的关键字都小于该节点的关键字。 2. 右子树中的所有节点的关键字都大于该节点的关键字。 3. 左右子树都是二叉排序树。 根据所给的关键字序列 {53,17,19,61,98,75,79,63,46,40},我们可以利用这些关键字构造出以下的二叉排序树: 53 / \ 17 61 / \ \ 19 46 98 / / 40 75 / \ 63 79 首先,将第一个关键字53设为根节点,后续每个关键字都从根节点开始比较大小,小于根节点的关键字将放到左子树中,大于根节点的关键字将放到右子树中。依此操作,可以构造出以上的二叉排序树。 在该二叉排序树中,最小值为19,最大值为98。若搜索关键字为63,则从根节点开始查找,63小于根节点53,则在左子树中查找;在左子树中,关键字46小于63,则继续在46的右子树中查找;最终找到了关键字为63的节点。 二叉排序树的主要优点是可以高效地进行搜索、插入和删除操作,时间复杂度为O(log n),可以用于解决一些大规模数据的查找问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qing影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值