蓝莓题库

蓝莓题库

欢迎来访!

网站首页资讯习题 正文

中国大学mooc数据结构与算法实战试题及答案

作者2023-05-30 05:07:58资讯习题 78 ℃0 评论

1-预备知识 [01:50:21 18段]

资料与测验随堂测验

1、以下各语言书写的代码可认为其功能是相同的。对于该代码,哪项判断是正确的? C/C++: #include <stdio.h> int hehe(){ printf("hehe"); hehe(); return 0; } int main(){ hehe(); return 0; } Java语言: public class Main{ public static int hehe() { System.out.println("hehe"); hehe(); return 0; } public static void main(String args[]) { hehe(); } } Python语言: def hehe(): print("hehe") hehe() return 0 hehe()
    A、代码有错,无法运行。
    B、代码可以运行,并在有限次函数调用后结束。
    C、代码可以运行,将产生无限次函数递归调用(不考虑机器出故障、停电等意外因素)。
    D、以上都不对。

2、函数必须有返回值。

2-数组与字符串 [02:49:24 30段]

资料与测验随堂测验

1、这道题是给使用C/C++语言的同学准备的。使用其他语言的同学,随便猜一项答案就好啦。 以下C/C++代码: void func(_______ , int); int main( ){ int array[10][20]; int n; // 省略array和n的初始化 func(array, n); return 0; } 第1行的函数原型(函数声明)中,______部分的第一个参量应该是
    A、int [ ][ ]
    B、int **
    C、int *[20]
    D、int (*)[20]

2、这道题是给使用Java语言的同学准备的。使用其他语言的同学,随便猜一项答案就好啦。 以下语句,正确的是:
    A、int a1[][] = new int[3][4];
    B、int a2[3][4] = new int[][];
    C、int a3[][4] = new int[3][];
    D、int a4[3][] = new int[][4];

3、以下哪个正则表达式与字符串 a 不匹配?
    A、abc
    B、[abc]
    C、[a-z]
    D、a*

3-线性结构 [05:20:03 47段]

资料与测验随堂测验

1、顺序表不适合进行下列哪种操作?
    A、随机查找(即:查找表中第k项元素)
    B、顺序查找(即:从表头开始依次查找每一项)
    C、随机插入或删除(即:在表中第k个位置插入元素或删除表中第k项元素)
    D、尾部插入或删除(即:在表尾插入元素或删除表尾元素)

2、单链表不适合进行下列哪种操作?
    A、顺序查找(即:从表头开始依次查找每项元素)
    B、表头插入或删除(即:在表头插入元素或删除表头元素)
    C、表中插入或删除(即:对于给出位置的表中某元素a,在a之后插入元素或删除a之后的一个元素)
    D、表尾插入或删除(即:在表尾插入元素或删除表尾元素)

3、“栈”是后进后出表。

4、“队列”是先进先出表。

5、循环队列的实现,必然是当“队列满”的时候,顺序表(数组)中还有一个空位置。

6、顺序栈的初始化,必定是 top = -1

期中考试(占总评40%)

数据结构与算法实战期中考试

1、一棵AVL树的前序遍历序列是20,5,1,10,30 ,中序遍历序列是 1,5,10,20,30 , 则插入数字8之后,该树应该做哪一种旋转?
    A、LL旋转
    B、LR旋转
    C、RL旋转
    D、RR旋转

2、以下说法正确否?请选出一项你认为最合适的答案
    A、未排序的数组进行二分查找的时间复杂度是O(N)
    B、二叉搜索树中查找元素x的时间复杂度是O(logN)
    C、AVL树中查找元素x的时间复杂度是O(logN)
    D、所有说法都正确

3、对一棵非空二叉树T,若T的度为2的结点有40个,则T中叶子结点的个数
    A、一定是39
    B、一定是40
    C、一定是41
    D、未定,跟二叉树的形态相关

4、如果一个线性表最常用的操作是访问一个随机位置、插入和删除最后一个元素,则最有效率的数据结构是
    A、双链表
    B、单向循环链表
    C、带有空头结点的双向循环链表
    D、顺序表

5、对于有N个节点的单链表,时间复杂度为O(N) 的操作是
    A、在p指针指向的节点之后插入一个新节点
    B、删除p指针指向的节点之后的一个节点
    C、删除头节点
    D、删除p指针所指向的节点(p指向的不是头节点)

6、元素A B C D依次入栈,出栈时机随意,则以下( )是不可能的出栈序列。
    A、ABCD
    B、DCBA
    C、DCAB
    D、ABDC

7、以下这段程序:for(i=0; i<=n; i++) // i从0到n的外循环,每次i递增1 for(j=i; j>=0; j/=2) // j从i到0的内循环, 每次 j变为上一次的一半 printf("%d\n", j); // 打印j 时间复杂度是:
    A、
    B、
    C、
    D、

8、若某二叉树的中序遍历序列是 DBACE ,则可以推断出的结论是
    A、该树的根结点是结点A
    B、该树的左子树的最左边结点是结点D
    C、结点E一定不是该树的左子树的结点
    D、该树共有三层

9、采用顺序存储的栈 ,若数组容量是 MaxSize,栈初始化时操作是 top=0 , 则判断栈满的语句是
    A、top == 0
    B、top == -1
    C、top == MaxSize - 1
    D、top == MaxSize

10、如果一组数据的最常用的操作,是在这组数当中删除值为x的元素(并且,不要求保持该组数据的次序),则以下四种数据结构中,哪一种最适合这个操作?
    A、单链表
    B、双链表
    C、双向循环链表
    D、顺序表

11、以下两段代码: A: for (int i=0; i<10; i++) printf("*"); //循环打印10个* B: for (int i=0; i<10000; i++) printf("*"); //循环打印10000个*的时间复杂度都是O(1)吗? 以下说法正确的是:
    A、不是O(1)。A代码的时间复杂度是O(10),B代码的时间复杂度是O(10000)。
    B、都是O(1),表示运行时间都是1。
    C、都是O(1),表示运行时间都是常数,也就是说A代码和B代码的运行时间相同。
    D、都是O(1),表示运行时间是常数,意思是说,两段代码的运行时间,不随着问题规模N的变化而变化。

12、已知一棵二叉树的先序遍历序列是ABC, 则以下哪个序列是不可能的中序遍历序列?请选择最佳答案。
    A、ABC
    B、CBA
    C、CAB
    D、选项中有两个以上(包括两个)序列是不可能的中序序列。

13、以下时间复杂度最高的是
    A、
    B、
    C、
    D、

14、表达式3+2*5-3*(5-2) 对应的逆波兰式(后缀式)是
    A、25*352-*3+-
    B、325*+352-*-
    C、25*3+-(352-*)
    D、325352*-*+-

15、循环队列是用单向循环链表实现的。

16、二叉搜索树的最小值一定在其左子树上。

17、后缀式 1 2 + 3 * 4 - 5 / 的值是(只填写值,不要填写等号、空格等无关字符;使用英文半角数字——如123等,不要使用全角数字——如123等)

18、一棵树的后序遍历序列是 FDEBGCA , 其中序遍历序列是 FDBEACG , 则它的前序遍历序列是(参照题干的格式使用英文半角大写字母,中间不要填写空格、逗号等无关字符,不要使用全角字母——例如ABC等)

19、一棵10层的二叉树(层数从1开始计算),最多有_____个节点 (填写半角英文阿拉伯数字——如123等,不要添加正负号、空格等无关字符,不要使用全角数字——如123等)

20、将序列{5, 2, 7, 3, 4, 1, 9, 8}中的数字按序一个一个插入到初始为空的二叉搜索树中,所得到的树的中序遍历序列是____ (填写英文半角数字,中间不填写空格、逗号等,两边不要加括号,例如——123,不要使用全角数字——例如123等)

期末考试(占总评60%)

数据结构与算法实战期末考试

1、以下这段代码 for(i=0; i<N; i++) //i从0循环到N-1,每次循环 +1 for(j=i; j<N; j+=j) //j从i循环到N-1,每次循环 +j printf("%d,%d\n", i, j); // 打印i和j 的时间复杂度是:
    A、
    B、
    C、
    D、

2、由分别带权为3、5、8、10的四个叶子结点构成一棵哈夫曼树,该树的带权路径长度为:
    A、26
    B、34
    C、50
    D、52

3、以下对于堆和哈夫曼树的描述,正确的是:
    A、堆一定是一棵完全二叉树,因此适合采用链式存储实现。
    B、堆的任意非叶节点的左右子树(如果非空)互换,仍然是堆。
    C、哈夫曼树中没有度为1的结点。
    D、哈夫曼树的叶结点一定都在同一层。

4、以下排序算法中,额外空间复杂度最高的是:
    A、简单选择排序
    B、快速排序
    C、冒泡排序
    D、归并排序

5、以下排序算法中,平均时间复杂度与最坏情况下时间复杂度不相同的是:
    A、简单选择排序
    B、冒泡排序
    C、归并排序
    D、快速排序

6、以下排序算法,稳定的是:
    A、快速排序
    B、归并排序
    C、希尔排序
    D、堆排序

7、以下不属于贪心法求解的问题是:
    A、构造哈夫曼树
    B、无负边的图中求解单源最短路径(Dijkstra法)
    C、Prim法求解最小生成树
    D、八皇后问题

8、将元素序列{20,1,35,56,12,7,29,82,666,2223} 按顺序插入一个初始为空的、大小为13的散列表中。散列函数为: H(key) = key % 13 。当第一次发现冲突时,正要插入散列表的元素是:
    A、7
    B、20
    C、56
    D、82

9、给定如下图所示的有向图 哪一项是该图的拓扑排序序列:
    A、ACFBDEG
    B、BEADCFG
    C、ABCDFEG
    D、BADCEGF

10、假设某顺序栈的栈顶下标为top,则栈的初始化操作是:
    A、一定是 top = 0
    B、一定是 top = -1
    C、top = 0 或 top = -1 都可以,与之相对应的,栈满也有两种不同的表示方法
    D、其它三个说法都不正确

11、关于最小生成树,说法正确的是:
    A、一个连通图的最小生成树必定是唯一的
    B、一个连通图的最小生成树有可能不唯一,但不同最小生成树的各边权值之和必定相等
    C、一个图有最小生成树,则这个图必定没有环
    D、其它三个说法都不正确

12、以下不属于分治法(或一般不用分治法求解)的是:
    A、快速排序
    B、归并排序
    C、求集合元素中第K大的数
    D、迷宫路径探索问题

13、对一棵非空二叉树T,若T的叶子节点有20个,则T中度为2的节点个数:
    A、一定是19
    B、一定是20
    C、一定是21
    D、未定,跟二叉树的形态相关

14、“不相交集”(也叫“并查集”)中,在查找时要进行路径压缩,则关于求并(union)运算,以下说法正确的是:
    A、按高度求并(union-by-height)不适用
    B、按大小求并(union-by-size)不适用
    C、按大小求并(union-by-size)和 按高度求并(union-by-height) 都不适用
    D、按大小求并(union-by-size)和 按高度求并(union-by-height) 都适用

15、基于比较的排序的最坏情况时间复杂度的下限是:
    A、
    B、
    C、
    D、

16、如果输入元素的顺序是 A B C D E, 要想使得输出元素的顺序是 A B C D E,则以下说法正确的是:
    A、只能使用栈(Stack)
    B、只能使用队列(Queue)
    C、栈和队列都可以使用
    D、栈和队列都不可以使用

17、对于二叉搜索树(Binary Search Tree),以下说法正确的是:
    A、二叉搜索树的查找时间效率是
    B、二叉搜索树的前序遍历序列,是从小到大排列的
    C、二叉搜索树的查找算法与二分法查找是等价的
    D、同样一组数据,如果按照不同顺序插入到一棵初始状态为空的二叉搜索树当中,则产生的二叉搜索树形态有可能不同。

18、对于经常需要求顶点入度的稀疏图,比较适合的存储结构是:
    A、邻接矩阵
    B、邻接表
    C、逆邻接表
    D、顺序表(数组)存储的邻接矩阵的上三角或下三角部分

19、要想删除最大堆(优先队列)中的某个不在堆顶的元素,恰当的操作是:
    A、直接删除,然后从该元素的子树中找一个合适的元素放入被删元素的位置。
    B、直接删除,然后把堆的最末位置的元素放入被删元素的位置,再做调整。
    C、将元素的值调整到足够大,使元素上升到堆顶,然后删除堆顶
    D、将元素的值调整到足够小,使元素下沉到堆的末尾,然后删除堆末尾。

20、如下图所示,插入元素5之后,AVL树进行旋转 这个旋转是:
    A、LL旋转(LL单旋、左左单旋)
    B、RR旋转(RR单旋、右右单旋)
    C、LR旋转(LR双旋、左右双旋)
    D、RL旋转(RL双旋、右左双旋)

21、以下各树,不是堆的有:
    A、
    B、
    C、
    D、

22、能与字符串 abcaabc#xyyzzy 匹配的正则表达式有:
    A、[a-z]*#[a-z]*
    B、[abc]*#[xyz]*
    C、abc*#xyyzzy
    D、[a-z]*

23、对于下图: 以下哪些选项是从顶点B出发的深度优先搜索序列:
    A、B F C A G D E
    B、B F G C A E D
    C、B A C F G D E
    D、B A D C F G E

24、对于下图: 以下哪些选项是从顶点B出发的广度优先搜索序列:
    A、B A D E F C G
    B、B F D E A G C
    C、B A D E F G C
    D、B A C F G D E

25、对于下图: 使用Kruskal算法去最小生成树,我们选择加入生成树的第三条边有可能是:
    A、(A, B)
    B、(C, D)
    C、(B, D)
    D、(A, D)

26、最大堆(大顶堆、max-heap)从根结点到其它任一结点的路径上的所有结点值是从大到小排列的。

27、一棵有9层结点的完全二叉树(层次从1开始计数),至少有255个结点。

28、若有向图G存在拓扑排序序列,则G一定是弱连通的。

29、AVL树T的最小元素一定位于树根的左子树。

30、图的深度优先遍历非递归算法通常采用栈实现,广度优先遍历非递归算法通常采用队列实现。

31、一个无向图G,若某顶点v到其它每个顶点都有至少一条路径,则图G只有1个连通分量。

32、若图G为连通图,则G的生成树是G的包含全部n个顶点的一个极大联通子图。

33、若图G为连通图且不存在拓扑排序序列,则图G必有环。

34、如果获知二叉树前、中、后序遍历序列的任意两种,一定可以确定第三种。

35、有向图的邻接矩阵是对称矩阵。

36、如果无向完全图G中有78条边,则G的生成树有_______ 条边。(填写半角阿拉伯数字如1234567890,不要添加空格等其它字符)

37、一棵二叉树的前序遍历序列是ABDFECGHK,中序遍历序列是DBEFAGHCK,则它的后序遍历序列是 _________. (填写半角大写字母且不要添加空格,格式如ABCDEFG).

38、对于下图: 使用Prim算法从顶点W开始获取最小生成树, 我们选择加入生成树的第二条边的权值是__________

39、后缀式(postfix expression,也叫逆波兰式, reverse Polish notation)1 2 + 3 4 - / 5 6 * + 的值是____________. (如果结果不是整数,四舍五入保留一位小数。如结果为正数,不需要添加+号。请使用半角阿拉伯数字、小数点和负号如-012345.6789填写,不要添加空格等其它字符)

40、若一个无向图有10个顶点、2个连通分量,则这个图最多有__________条边。

网站分类
最新发表
标签列表