山东大学软件学院数据结构练习题
数据结构 参考答案
一 简答题
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分。
山东大学软件学院数据结构练习题相关推荐
- 山东大学软件学院数据结构实验报告及实验代码(全)
实验大纲: https://pan.baidu.com/s/16X4z9vbJzR7D-UlTyMLjgg 提取码:g29t 内容为2019级的实验大纲,每年基本不变.平台具有查重功能,所以建议大家自 ...
- 山东大学软件学院数据结构(考试)——期末考试回忆版
考试时间:2020年1月9日 8:30~10:30,山东大学软件学院大二上数据结构考试 试卷结构和题目: 一. 简答题(20分) 给一个序列插入堆栈中,又给出两个序列,问能否通过堆栈操作,得到这后给出 ...
- 山东大学软件学院数据结构复习题目
线性结构部分 若某语句执行频度为(n+n2log2n+5n2)/n1/2:用大O表示为: 2.下列程序片段的复杂度分别为? i=s=0; while (s<n) {i++;s+=i;} x=n; ...
- 山东大学软件学院2021-2022数据结构期末考试
山东大学2021-2022数据结构期末考试 时间:2022年1月2日8:30-10:30 以下只是个人考试之后的回忆,具体的数值已经忘了,大家复习时一定要掌握算法思想,包括能够手动模拟算法. 一.线性 ...
- 436分复试被刷!山东大学软件学院
山东大学是一所985大学,位于山东省省会济南市,计算机学科评估B+,软件工程学科评估B+,在985大学中排名中游,水平还不错. 今天来聊一下,山东大学软件学院的情况. 首先是2021考研的招生目录: ...
- 山东大学软件学院2021操作系统期末试题b卷
山东大学软件学院2020-2021操作系统期末试题 B卷 回忆版 数据是考完抄下来的,吼吼吼. 一.结合操作系统.对资源和程序的管理和分配,描述中断机制所起的作用在哪方面(10分) 二.结合实现进程机 ...
- 山东大学软件学院最优化方法考试复习笔记
课程为山东大学软件学院人工智能专业2020年大二下学期的"最优化方法"课程 文章目录 一.介绍 二.算法 1.线性规划的图解法 2.基本单纯形法 3.两阶段单纯形法 4.给线性规划 ...
- 山东大学软件学院信息检索(考试)——期末考试回忆版
2020-2021年度山东大学软件学院信息检索考试 开学的时候上这门课时老师说很多同学都觉得这门课程难(范围广且多,不过这倒是符合信息检索的定义"融合了~~~的综合学科",哈哈哈) ...
- 山东大学软件学院2022-2023软件工程期末考试(回忆版)
山东大学软件学院2022-2023软件工程期末考试(回忆版) 前言 1.考试时间:2023/2/17 14:30-16:30 (因疫情推迟到开学考的期末考试) 2.考试科目:软件工程(老师:LuXuD ...
最新文章
- 【Bit-Z月报】11月送出182.4万美元活动奖励,真是豪气
- gblfy_IDEA常用快捷键技巧
- php redis 查询,Redis慢查询日志 PHP中使用redis – 安装扩展模块
- Effective C# Item47:选择安全代码
- C++函数模板(模板函数)详解
- 键盘按键的各种编码对照表
- HTML 拖放功能 - DragDrop
- Matplotlib——线图_axis()函数
- 生理自我、社会自我、心理自我的提出者,是詹姆斯还是奥尔波特?|小白心理-312/347考研答疑
- 记录,Cents 7 更改home和root的中文路径
- 前字节程序员感叹“字节范”就是工作上不设边界,待遇上延迟满足。
- ArcGIS Pro试用申请
- 【Python】面试官喜欢问的100个面试问题
- python机器学习:决策树详解
- 【附源码】计算机毕业设计JAVA九宫格日志网站
- 【Golang】欲入此Go先看Go的基本语法
- 素数总结(包含素数表)
- 上班族最常用数据图表分析软件有哪些
- DenseFuse :A Fusion Approach to Infrared and Visible Images解读
- 中文puppy linux7.5,小型Linux发行版Puppy Linux 7.5发布下载