重庆邮电大学(重邮)802数据结构:2021年(答案&试题)

重邮802数据结构:2021年(答案&试题)

注:本套试卷由强连通计算机考研完成解析,但难免有疏漏,如果发现错误请及时与我们反馈。
勘误:对微信公众号“强连通计算机考研”回复“重邮802勘误”。

2021年答案

一、 选择题(本大题共 15小题,每小题 2分,共 30分)在这里插入图片描述

二、填空题(本大题共10小题,每小题3分,共30分)在这里插入图片描述

三、综合应用题(本大题共7小题,共60分)

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、算法分析与设计题(本大题共2小题,每小题15分,共30分)在这里插入图片描述

在这里插入图片描述

2021年试题

一、 选择题(本大题共 15小题,每小题 2分,共 30分)

1、设 N是描述问题规模的非负整数,下列程序段的时间复杂度是( )。

static int fun(int N) {
	if (N == 1) return 0;
	return 1 + fun(N/2);
}

A O ( l o g N ) O(logN) O(logN)     B. O ( N ) O(N) O(N)    C. O ( N l o g N ) O(NlogN) O(NlogN)    D. O ( N 2 ) O(N^2) O(N2)

2、一些随机产生的数采用线性链表存储,在下面这些排序方法中,( )的时间复杂度是最小的。
A.插入排序   B. 快速排序    C. 堆排序    D. 归并排序

3、一个栈的输入序列为 a b c d e,则下列序列中不可能是栈的输出序列的是( )。
A.b c d a e    B.e d a c b    C.b c a d e    D.a e d c b

4、实现一个队列需要( )个栈。
A.1 B. 2 C. 3 D. 4

5、下面( )是一颗满二叉树的结点个数。
A. 8    B. 13    C. 14    D. 15

6、若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。
A.X的双亲    B.X的右子树中最左的结点
C.X的左子树中最右的结点    D.X的左子树中最右的结点

7、下列序列中,哪一个是堆( )?
A.75,65,30,15,25,45,20,10    B.75,65,45,10,30,25,20,15
C.75,45,65,30,15,25,20,15    D.75,45,65,10,25,30,20,15

8、一棵Huffman树共有203个结点,对其Huffman编码,共能得到()个不同的码字。
A.100   B.102    C.200   D.203

9、下面说法错误的是()。
A.一个有n个顶点和n条边的无向图一定是有环的。
B.建立十字链表的时间复杂度和建立邻接表是相同的。
C.邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。
D.在某些图的应用问题中,如果需要找到表示同一条边的两个结点,那么采用邻接多重表比邻接表作为储存结构更为适宜。

10、图的广度优先遍历算法中使用队列作为其辅助数据结构,那么在算法执行过程中每个顶点进队次数最多为()。
A.1    B.2    C.3    D.4

11、设一个有向图G=(V,E),其中V={v1,v2,v3,v4,v5,v6},E={<v1,v2>,<v2,v3>,<v3,v6>,<v4,v2>,<v4,v5>,<v5,v6>}不属于该图的拓扑排序有序序列是( )。
A.v1,v2,v3,v4,v5,v6    B.v1,v4,v2,v3,v5,v6 C.v4,v5,v1,v2,v3,v6    D.v4,v1,v2,v3,v5,v6

12、判断一个有向图是否存在回路,除可利用拓扑排序方法外,还可以用()。
A.求关键路径的方法    B.求最短路径的方法
C.广度优先遍历的方法    D.深度优先遍历的方法

13、设有一个二叉排序树(二叉查找树),其结点上存储有数字1到100。现在需要查找数字55,下面( )序列不可能是查找过程中访问过的结点序列。
A.{10,75,64,43,60,57,55}    B.{90,12,68,34,62,45,55}
C.{9,85,47,68,43,57,55}    D.{79,14,72,56,16,53,55}

14、在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找关键码12需做( )次关键码比较。
A.2   B.3    C.5   D.4

15、一颗3阶B-树中有2047个关键字,包括叶结点层,该树的最大深度为()。
A.11    B.12    C.13    D.14

二、填空题(本大题共10小题,每小题3分,共30分)

16、一颗深度为k的平衡二叉树,其每个非终端结点的平衡因子均为0,则该树共有( )个结点。
17、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.
在这里插入图片描述The maximum possible number of iterations of the while loop in the algorithm is( )。
18、对于模式串“aabaac”给出其next数组( )。
19、现有按中序遍历二叉树的结果为abc,有( )种不同形态的二叉树可以得到这一遍历结果。
20、设一棵二叉树有20个叶子结点,则在该树中有2个孩子的结点个数为( )。
21、设G是一个非连通无向图,有10条边,则该图的顶点数至少有( )个。
22、顺序查找3个元素的顺序表,若查找第1、第2和第3个元素的查找概率分布是1/2、1/3和1/6,则查找任一元素的平均查找长度为()。
23、散列函数有一个共同的性质,即函数值应当以( )取其值域的每个值。(请在最大概率、最小概率、平均概率、同等概率这些术语中选择正确的进行填空)
24、假设某算法在输入规模为n时的计算时间为T(n)= n 2 n^2 n2。在某台计算机上实现并完成该算法的时间为t秒。现有另一台计算机,其运行速度为第一台计算机的64倍,那么在这台计算机上用同一算法在t秒内能解输入规模()的问题。
25、表达式 a × b - c - d $ e $ f - g - h × i中,运算符的优先级由高到低依次为-, ×,$,均右结合,则相应的后缀式是( )。

三、综合应用题(本大题共7小题,共60分)

26、假设称正读和反读都相同的字符序列为“回文",例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。下面代码判别读入的一个以‘@’为结束符的字符序列是否是“回文”。请给出缺失的5行代码。

Status SymmetryString(char* p)
{
    Queue q;
    if(!InitQueue(q)) return 0;
    Stack s;
    InitStack(s);
    ElemType e1, e2;
    while((1)) {
        Push(s, *p);
        EnQueue(q, *p);
        (2)
    }
    while(!StackEmpty(s)) {
        (3)
        (4)
        if((5)) return FALSE;
    }
    return OK;
}

27、(5分)阅读下面代码:

int count = 0;
int N = a.length;
sort(a);
for (int i = 0; i < N; i++) {
    for (int j = i+1; j < N; j++) {
    if (BinarySearch(a, a[i] + a[j])) count++;
    }
}

假设当N=3500,上述代码运行1秒。那么,当N=35000时,该代码的运行时间最接近下面那个时间?请给出简单的分析过程。
A.10 seconds    B.20 seconds    C.1 minute    D.2 minutes   E.1 hour    F.2 hours

28、(8分)将关键字序列{23,14,9,6,30,12,18}散列存储到散列表中,散列表的存储空间是一个下标从0开始的一维数组,散列函数为H(Key)=Key MOD 7,处理冲突采用线性探测法,要求装填(载)因子为0.7。请画出所构造的散列表。

29、(12分)已知一棵二叉树的先序序列:ABDGJEHCFIKL,中序序列:DJGBEHACKILF。
(1) 画出此二叉树的形态。
(2) 画出此二叉树的后序线索树。
(3) 采用孩子兄弟表示法来存储该二叉树,请画出此二叉树的存储结构。
(4) 画出与此二叉树对应的森林。

30、(8分)考虑下列36个字符(symbol)的序列:F, C, F, C, E, C, A, C, B, D, E, D, F, E, A, B, F, B, A, F, F, C, D, C, B, E, D, F, F, F, C, C, D, E, E, F。下面表30-1给出了为上述字符序列编码的四种变长编码方式,即CODE1、CODE2、CODE3、CODE4;表30-2给出了编码特点,即A、B、C、D,请给出这4种编码方式所具有的编码特点。(填写该编码方式具有的编码特点编号即可,不用给出具体分析过程)
表30-1:

symbolfrequencyCODE1CODE2CODE3CODE4
A30110111110100
B40100101111101
C800000001
D5110101110110
E600110010111
F1010110100

表30-2:

A. 前缀编码
B. Huffman编码( 能够由Huffman 算法生成)
C. 最优前缀编码
D.上述都不满足

CODE1: _____ CODE2: _____ CODE3 :_____ CODE4 :_____

31、图G的邻接矩阵如下所示:

123456
1615
2653
315564
4552
5366
6426

(1)求从顶点1出发的广度优先搜索序列;
(2) 根据prim算法,求图G从顶点1出发的最小生成树,要求表示出其每一步生成过程。

32、(10分)表32-1中,第0行是待排序序列的原始输入(12 2 16 30 28 10 16* 20 6 18);其他各行是5种排序算法得到的某个中间步骤的内容。表32-2列出了6种排序算法。请按行序直接给出每行对应排序算法的编号。每个编号只使用一次。
表32-1

行号排序算法序列
第0行原始输入12 2 16 30 28 10 16* 20 6 18
算法12 12 16 30 28 10 16* 20 6 18
算法26 2 10 12 28 30 16* 20 16 18
算法32 12 16 30 10 28 16* 20 6 18
算法410 2 16 6 18 12 16* 20 30 28
算法52 12 16 28 10 16* 20 6 18 30

表32-2:

排序算法编号排序算法名称排序算法编号排序算法名称
A希尔排序(增量为5,2,1)D二路归并排序
B快速排序E直接插入排序
C直接选择排序F冒泡排序

四、算法分析与设计题(本大题共2小题,每小题15分,共30分

33、如果一个序列是一个先单调递增后单调递减的序列,那么它称为双调序列。设计一个尽可能高效的算法,找到由N个数组成的一个双调序列中最大的关键值。要求:
(1) 描述算法的基本设计思想
(2) 根据设计思想,采用C或C++语言描述算法,关键之处给出注释;
(3) 说明你所设计的算法的时间复杂度和空间复杂度。

34、设有一个正整数序列组成的有序单链表(按递增有序,且允许有相等的整数存在),请设计一个用最小的时间和最小空间的算法实现下列功能:(a) 确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{3、5、6、6、8、10、11、13、13、16、17、20、20}中比10大的数有5个);(b)将单链表中比正整数x小的数按递减次序排列;©将正整数比x大的偶数从单链表中删除。要求:
(1) 描述算法的基本设计思想;
(2) 根据设计思想,采用C或C++语言描述算法,给出注释;
(3) 说明你所设计的算法的时间复杂度和空间复杂度。

提示:节点定义供参考

typedef struct node {
    int data;
    struct node *next;
} LNode,*LinkList;

提示:算法定义形式供参考

void FunctionExam(LinkList L1, int x) 
{ 
...... 
}
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
重庆邮电大学数据结构实验包括顺序表、链表、栈、队列、二叉树、图的遍历、查找算法和排序算法等内容。学生需要通过实验课程来掌握这些数据结构的基本概念、实现方法和应用场景。以下是每个实验的简要介绍: 1. 实验一:顺序表的实现及应用 顺序表是一种线性表,它的元素在内存中是连续存储的。在这个实验中,学生需要实现顺序表的基本操作,如插入、删除、查找等,并且通过实现一个简单的通讯录应用来应用顺序表。 2. 实验二:链表的实现及应用 链表是一种线性表,它的元素在内存中不是连续存储的。在这个实验中,学生需要实现链表的基本操作,如插入、删除、查找等,并且通过实现一个简单的火车调度系统来应用链表。 3. 实验三:栈的实现及应用 栈是一种特殊的线性表,它的元素只能在表的一端进行插入和删除操作。在这个实验中,学生需要实现栈的基本操作,如入栈、出栈等,并且通过实现一个简单的括号匹配应用来应用栈。 4. 实验四:队列的实现及应用 队列是一种特殊的线性表,它的元素只能在表的一端进行插入操作,在另一端进行删除操作。在这个实验中,学生需要实现队列的基本操作,如入队、出队等,并且通过实现一个简单的银行排队应用来应用队列。 5. 实验五:二叉树操作及应用 二叉树是一种非常重要的数据结构,它的应用非常广泛。在这个实验中,学生需要实现二叉树的基本操作,如插入、删除、查找等,并且通过实现一个简单的表达式求值应用来应用二叉树。 6. 实验六:图的遍历操作及应用 图是一种非常复杂的数据结构,它的应用也非常广泛。在这个实验中,学生需要实现图的基本操作,如深度优先遍历、广度优先遍历等,并且通过实现一个简单的迷宫游戏应用来应用图。 7. 实验七:查找算法的实现 查找算法是一种非常重要的算法,它的应用也非常广泛。在这个实验中,学生需要实现查找算法的基本操作,如顺序查找、二分查找等,并且通过实现一个简单的电话号码查找应用来应用查找算法。 8. 实验八:排序算法的实现 排序算法是一种非常重要的算法,它的应用也非常广泛。在这个实验中,学生需要实现排序算法的基本操作,如冒泡排序、快速排序等,并且通过实现一个简单的成绩排序应用来应用排序算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值