Bootstrap

数据结构+算法分析与设计[19-21年真题版]

2019年考试试题

一、分析下面所给算法段的时间复杂度。(10分)

X=0;y=1;

for(j=1;j<=n;j++){

s=x+y;y=x;x=s;}

二、设有一个10阶的对称矩阵A,采用以行优先的方式压缩存储,a11为第1个元素,其存储地址为1,每个元素占3个存储单元。试问元素a85和a58的地址是多少。(10分)

三、已知一棵二叉树的中序序列的结果是BDCEAFHG,后序序列的结果是DECBHGFA,试画出这棵二叉树。(10分)

四、己知图G如下,给出从顶点V1出发的一个深度优先生成树;给出从顶点V1出发产生的一个广度优先生成树。(10分)

五、使用克鲁斯卡尔算法构造出如下图所示的图G的一棵最小生成树。(10分)

六、对于有n个顶点的无向图,采用邻接矩阵表示,如何判断以下问题:图中有多少条边?任意两个顶点i和j之间是否有边相连?任意一个顶点的度是多少。(10分)

七、分别写出按下列各种排序方法对已知序列进行排序时的每一趟结果:(15分)

(1)冒泡排序,已知序列{17,18,60,40,7,32,73,65,85}。

(2)希尔排序,已知序列{10,18,4,3,6,12,1,9,15,8}。

(3)归并排序,已知序列{10,18,4,3,6,12,1,9,15,8}。

八、对关键字序列7,4,1,14,100,30,5,9,20,134,设哈希函数为H(X)=X MOD 13。试给出表长为13的哈希表(用线性探测开放定址法处理冲突)。(15分)

九、假定用于通信的电文仅由8个字母c1,c2,c3,c4,c5,c6,c7,c8组成,各字母在电文中出现的频率分别为5,25,3,6,10,11,36,4。试为这8个字母设计不等长Huffman编码,并给出该电文的总码数。(15分)

十、有数组A[4][4],把1到16个整数分别按顺序放入A[0][0],…,A[0][3],A[1][0],…,

A[1][3],A[2][0],…,A[2][3]A[3][0],…,A[3][3]中,编写一个函数获取数据并求出两对角线元素的乘积。(15分)

十一、编写一个函数,利用二分查找算法在一个有序表中插入一个元素X,并保持表的有序性。

(15分)

十二、用调用自定义函数的形式编程求:S=m!+n!+k!,其中m,n,k从键盘输入。(15分)

2020年考试试题

一、分析以下所给程序段的时间复杂度。 (10分)

for (i=1;i<n;i++)

{ y=y+1;

for (j=0;j<=(2*n);j++)

x++;}

二、设有一个10X10的对称矩阵A[10][10],采用按行压缩存储的方式存放于一个一维数组B[]中,则数组B[]的容量有多大?若设A[0][0]为第一个元素,存放于B[0],且数组A[][]的每一个数组元素在数组B[]中占一个数组元素位置,则A[8][5]在数组B[]中的地址是多少?(10分)

三、已知一棵二叉树的先序序列的结果是ABCDEFGHI,中序序列的结果是BCAEDGHFI,试画出这棵二叉树。 (10分)

四、己知一个以二维数组表示的图的邻接矩阵如下所示,试画出从顶点V1出发进行遍历所得的一个深度优先生成树。 (10分)

 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10

V1 0 0 0 0 0 0 1 0 1 0

V2 0 0 1 0 0 0 1 0 0 0

V3 0 0 0 1 0 0 0 1 0 0

V4 0 0 0 0 1 0 0 0 1 0

V5 0 0 0 0 0 1 0 0 0 1

V6 1 1 0 0 0 0 0 0 0 0

V7 0 0 1 0 0 0 0 0 0 1

V8 1 0 0 1 0 0 0 0 1 0

V9 0 0 0 0 1 0 1 0 0 0

V10 1 0 0 0 0 1 0 0 0 0

五、使用普里姆(Prim)算法构造出如下图所示的图G的一棵最小生成树。 (10分)

                              8 9

                                     5

                               8 6

                       10 4

                            20 6

                                  12

图G:一个无向图

六、试证明有n0个叶子的哈夫曼树共有2n0-1个结点。 (10分)

七、设待排序的排序列为{36,80,45,66,22,9,16,36},试分别写出按下列排序方法进行排序时的变化过程(即每趟排序后的结果)。(1)直接插入排序;(2)冒泡排序;(3)直接选择排序。 (15分)

八、设有一组关键字{19,01,23,14,55,20,84,27,68,11,10,77},采用哈希函数: H(Key)=Key MOD 13, 采用开放地址法的线性探测再散列方法解决冲突,试在0~18的散列地址空间中对该关键字序列构造哈希表。 (15分)

九、设给定权集W={4,5,6,7,10,12,18},试构造出关于W的哈夫曼树,并求出其加权路径长度WPL。 (15分)

十、编写一个算法计算一棵二叉树t的高度过程。 (15分)

十一、编写一个算法(命名为QueueToStack)从一个队列创建一个栈,使队列的头为栈顶,队列尾为栈底,算法的最后的要求使队列保持不变。 (15分)

十二、有50个学生,每个学生有3门功课成绩,从键盘输入这50个学生的学号、姓名及3门功课成绩,计算出每人平均成绩,并用所有数据包括平均成绩建立在一个磁盘文件“stud”中。 (15分)

2021年考试试题

一、分析以下所给程序段的时间复杂度。 (10分)

a=0;b=1;

for(i=2;i<=n;i++)

{ s=a+b;

b=a;

a=s;

}

二、已知上三角矩阵A4x4如图(a)所示,其顺序存储如图(b)所示。若每个存储结点的尺寸为4个字节,元素a11的地址为1。 (10分)

    (1)求元素a34在顺序存储中的序号以及地址。

    (2)求元素a41在顺序存储中的序号以及地址。

                               10 25 32 0

                     1 66 30 5

                          A= 1 1 20 2

                                1 1 1 77

图(a):上三角矩阵

1 2 3 4 5 6 7 8 9 10 11

10 25 32 0 66 30 5 20 2 77 1

a11 a12 a13 a14 a22 a23 a24 a33 a34 a44

图(b):顺序存储

三、A、B、C、D四个元素进S栈的顺序是A、B、C、D,试写出7种可能的出栈序列和相应操作,并给一个不会是出栈序列的实例,并说明理由。(10分)

四、已知一棵二叉树的前序序列的结果是ABDFCEHG,中序序列的结果是DBFAHECG,试画出这棵二叉树。 (10分)

四、使用普里姆(Prim)算法构造出如下图所示的图G的一棵最小生成树。 (10分)

                                  60

                         50

                                         52 45

                               65 42

                      40 50 30

                                        70

                            图G:一个无向图

六、一棵高度为h的满k叉树有如下性质:第h 层上的结点都是叶结点,其余各层上每个结点都有k棵非空子树,如果按层次自顶向下,同一层自左向右,顺序从1开始对全部结点进行编号,试问: (10分)

(1)各层的结点个数是多少?

(2)编号为i的结点的第m 个孩子结点(若存在)的编号是多少?

(3)若结点个数为n,则高度h是n的什么函数关系?

七、给出一组关键字(29,18,25,47,58,12,51,10),分别写出按下列各种排序方法进行排序时的变化过程: (15分)

   (1)归并排序,每归并一次书写一个次序。

   (2)快速排序,每划分一次书写一个次序。

   (3)堆排序,先建成一个堆,然后每从堆顶取下一个元素后,将堆调整一次。

八、依次输入表(30,15,28,20,24,10,12,68,35,50,46,55)中的元素,生成一棵二叉树排序树。 (15分)

(1)试画出生成之后的二叉排序树;

(2)对该二叉排序树作中序遍历,试写出遍历序列;

(3)假定每个元素的查找概论相等,试计算该二叉排序权的平均查找长度。

九、设给定权集W={2,3,4,7,8,9},试构造出关于W的一棵哈夫曼树,并求出其加权路径长度WPL。 (15分)

十、二叉树采用链接存储结构,试设计一个算法计算一棵给定二叉树的所有结点数。(15分)

十一、用递归法求:Y=X+X2/2!+X3/3!+…到第n项,n和x的值由键盘输入。 (15分)

十二、编写几个函数。(1)输入100个员工的姓名和员工号;(2)按员工号由小到大排序,姓名顺序也随之调整;(3)要求输入一个员工号,用折半查找法找出该员工的姓名,从主函数输入要查找的员工号,输出该项员工姓名。 (15分)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;