数据结构 参考答案

一 简答题

1、若元素的进栈序列为A,B,C,D,E,运用栈操作,能否得到出栈序列B,C,A,E,D和D,B,A,C,E,为什么?

答:评分标准 (1)答对一个1分,(2)2分

(1)能得到出栈序列B,C,A,E,D。过程如下:A, B进,B出;然后C进,C,A依次出栈;接下来D,E先后入栈,出栈得到E,D,

不能得到D,B,A,C,E

(2)因为栈后进先出

2、请给出四维数组的列主映射函数。

答:评分标准 答对得4分。

假设四维数组A[u1,u2,u3,u4],任一元素A[j1,j2,j3,j4]的列主映射函数。

Map(j1,j2,j3,j4)=j4*u1*u2*u3+j3*u1*u2+j2*u1+j1

3、已知一棵二叉树的前序遍历为ABDEGCFH,中序遍历为DBGEACFH,求二叉树的后序遍历。

答:评分标准

(1)仅画出二叉树得2分

(2)后序遍历正确2分(直接得到后续遍历4分)

二叉树      A

B       C

D      E       F

G           H

后序遍历为: DGEBHFCA

二、应用题

1、设散列长度为13,散列函数Hash(k)=k%11,若输出序列为{22,41,53,46,30,13,1,67},解决溢出的方法为线性开型寻址散列。

(1)请构造该散列表

(2)搜索元素30和元素67所需要比较的次数是多少?

(3)给出删除元素1后的散列表结构

答:评分标准(1)5分,部分答对酌情给分(2)3分,答对一个1.5分(3)2分,部分答对酌情给分

(1)构造的散列表:

Index

0

1

2

3

4

5

6

7

8

9

10

11

12

Content

22

1

46

13

67

41

53

30

(2)搜索30:3次    搜索67:4次

(3)删除元素1后的散列表:

Index

0

1

2

3

4

5

6

7

8

9

10

11

12

Content

22

67

46

13

41

53

30

2、一个nⅹn的矩阵M是一个反对角矩阵当且仅当对于所有满足i+j≠n+1的i和j有M(i,j)=0

(1)给出一个4ⅹ4反对角矩阵的样例

(2)设计一种映射模式,用来把一个反对角矩阵映射到一个大小为n的一维数组之中。

答:评分标准(1)5分(2)5分

(1)

其中,非零数字1可以替换为任意整数数字

(2)当i+j=n+1时,map(i,j)= n-j 或 map(i,j)= n-i

当i+j≠n+1时,值为0

三 算法题

1、设计将整数数组所有奇数移到所有偶数之前的算法,要求算法时间复杂度最优。叙述算法思想并用C++实现,分析其时间复杂度。

评分标准:

算法思想:可以使用类似快排的方法进行比较,定义左右两个指针,左边向右找偶数,右边向左找奇数,如果遇到则进行交换,直到左指针大于等于右指针结束交换。得8分

void quickpass(int r[], int s, int t)

{

int i=s,j=t,x=r[s];

while(i<j)< p="">

{

while (i<j && r[j]%2==0) j=j-1;  if (i<j) {r[i]=r[j];i=i+1;}

while (i<j && r[i]%2==1) i=i+1;  if (i<j) {r[j]=r[i];j=j-1;}

}

r[i]=x;

}                    得4分

上述算法的时间复杂度为O(n),得3分

若使用冒泡或其他算法,描述正确的,酌情给分

2、

答: 评分标准:

通常我们所使用的先序、中序和后序遍历对于叶结点的访问都是从左到右的顺序,这里我们选择中序递归遍历。算法思想:设置前驱结点指针pre,初始为空。第一个叶结点由指针head指向。遍历到叶结点时,就将它前驱的rchild指针指向它,最后一个叶结点的rchild为空。得7分。

算法实现如下:

LinkedList head, pre=NULL;                        //全局变量

LinkedList InOrder(BiTree bt){

if(bt){

InOrder(bt->lchild);                      //中序遍历左子树

if(bt->lchild==NULL&&bt->rchild==NULL)    //叶结点

if(pre==NULL){

head=bt;

pre=bt;

}                                     //处理第一个叶结点

else{

pre->rchild=bt;

pre=bt;

}                                     //将叶结点链入链表

InOrder(bt->rchild);                      //中序遍历右子树

pre->rchild=NULL;                         //设置链表尾

}

return head;

}                              得5分。

上述算法的时间复杂度为O(n),辅助变量使用head和pre,栈空间复杂度为O(n)。

得3分。

山东大学软件学院数据结构练习题相关推荐

  1. 山东大学软件学院数据结构实验报告及实验代码(全)

    实验大纲: https://pan.baidu.com/s/16X4z9vbJzR7D-UlTyMLjgg 提取码:g29t 内容为2019级的实验大纲,每年基本不变.平台具有查重功能,所以建议大家自 ...

  2. 山东大学软件学院数据结构(考试)——期末考试回忆版

    考试时间:2020年1月9日 8:30~10:30,山东大学软件学院大二上数据结构考试 试卷结构和题目: 一. 简答题(20分) 给一个序列插入堆栈中,又给出两个序列,问能否通过堆栈操作,得到这后给出 ...

  3. 山东大学软件学院数据结构复习题目

    线性结构部分 若某语句执行频度为(n+n2log2n+5n2)/n1/2:用大O表示为: 2.下列程序片段的复杂度分别为? i=s=0; while (s<n) {i++;s+=i;} x=n; ...

  4. 山东大学软件学院2021-2022数据结构期末考试

    山东大学2021-2022数据结构期末考试 时间:2022年1月2日8:30-10:30 以下只是个人考试之后的回忆,具体的数值已经忘了,大家复习时一定要掌握算法思想,包括能够手动模拟算法. 一.线性 ...

  5. 436分复试被刷!山东大学软件学院

    山东大学是一所985大学,位于山东省省会济南市,计算机学科评估B+,软件工程学科评估B+,在985大学中排名中游,水平还不错. 今天来聊一下,山东大学软件学院的情况. 首先是2021考研的招生目录: ...

  6. 山东大学软件学院2021操作系统期末试题b卷

    山东大学软件学院2020-2021操作系统期末试题 B卷 回忆版 数据是考完抄下来的,吼吼吼. 一.结合操作系统.对资源和程序的管理和分配,描述中断机制所起的作用在哪方面(10分) 二.结合实现进程机 ...

  7. 山东大学软件学院最优化方法考试复习笔记

    课程为山东大学软件学院人工智能专业2020年大二下学期的"最优化方法"课程 文章目录 一.介绍 二.算法 1.线性规划的图解法 2.基本单纯形法 3.两阶段单纯形法 4.给线性规划 ...

  8. 山东大学软件学院信息检索(考试)——期末考试回忆版

    2020-2021年度山东大学软件学院信息检索考试 开学的时候上这门课时老师说很多同学都觉得这门课程难(范围广且多,不过这倒是符合信息检索的定义"融合了~~~的综合学科",哈哈哈) ...

  9. 山东大学软件学院2022-2023软件工程期末考试(回忆版)

    山东大学软件学院2022-2023软件工程期末考试(回忆版) 前言 1.考试时间:2023/2/17 14:30-16:30 (因疫情推迟到开学考的期末考试) 2.考试科目:软件工程(老师:LuXuD ...

最新文章

  1. 【Bit-Z月报】11月送出182.4万美元活动奖励,真是豪气
  2. gblfy_IDEA常用快捷键技巧
  3. php redis 查询,Redis慢查询日志 PHP中使用redis – 安装扩展模块
  4. Effective C# Item47:选择安全代码
  5. C++函数模板(模板函数)详解
  6. 键盘按键的各种编码对照表
  7. HTML 拖放功能 - DragDrop
  8. Matplotlib——线图_axis()函数
  9. 生理自我、社会自我、心理自我的提出者,是詹姆斯还是奥尔波特?|小白心理-312/347考研答疑
  10. 记录,Cents 7 更改home和root的中文路径
  11. 前字节程序员感叹“字节范”就是工作上不设边界,待遇上延迟满足。
  12. ArcGIS Pro试用申请
  13. 【Python】面试官喜欢问的100个面试问题
  14. python机器学习:决策树详解
  15. 【附源码】计算机毕业设计JAVA九宫格日志网站
  16. 【Golang】欲入此Go先看Go的基本语法
  17. 素数总结(包含素数表)
  18. 上班族最常用数据图表分析软件有哪些
  19. DenseFuse :A Fusion Approach to Infrared and Visible Images解读
  20. 中文puppy linux7.5,小型Linux发行版Puppy Linux 7.5发布下载

热门文章

  1. 王亟亟的Python学习之路(五)-dictionary,set,函数,函数参数
  2. [置顶]记录脑残失误,让达摩克利斯之剑永远高悬
  3. Redis存储结构探究
  4. 成都计算机中心起名,成都给宝宝起名字的地方
  5. 如何查看 ananconda 的环境(虚拟环境)安装包位置
  6. K8s(Kubernetes)架构笔记
  7. html代码中title什么意思,title是什么意思?SEO中title如何使用?
  8. 对智能手表的功能买点认知介绍
  9. 你见过这么细的图书管理系统吗?
  10. 投票系统开发问题合集