自考本科数据结构导论(02142)历年(应用题+算法题)真题汇总【20年4月-22年10月】

文章目录

  • 2020年4月
    • 应用题
    • 算法设计题
  • 2020年10月
    • 应用题
    • 算法设计题
  • 2021年4月
    • 应用题
    • 算法设计题
  • 2021年10月
    • 应用题
    • 算法设计题
  • 2022年4月
    • 应用题
    • 算法设计题
  • 2022年10月
    • 应用题
    • 算法设计题

2020年4月

应用题

  1. 有二叉树如题29图所示,写出该二叉树的先序遍历、中序遍历和后序遍历序列。
    在这里插入图片描述
    在这里插入图片描述

  2. 如题30图所示的图结构,请写出以10为源点的广度优先搜索得到的顶点访问序列,并画出搜索过程图。(同等情况下,值小的结点优先访问)
    在这里插入图片描述
    在这里插入图片描述

  3. 设散列表的长度为11,散列丽数h(key)=key mod 11,采用线性探查法解决冲突。从空表开始,依次插人下列关键字值序列:80,40,7,18,13,2,请建立散列表。
    在这里插入图片描述

  4. 依次输人键值序列:30,10, 20,50,40,60,构建二叉排序树,要求给出构建过程。

https://www.bilibili.com/video/BV1Tk4y117fs?from=search&;seid=15419245847752740376&spm_id_from=333.337.0.0
(博主的答案,没找到自考办给的官方答案,如果有小伙伴找到了辛苦下方评论留下地址)
在这里插入图片描述

  1. 对序列(45,38,66 ,90,88,10,25,45)进行冒泡排序,写出前三趟排序结果。
    在这里插入图片描述

算法设计题

  1. 试写出二分查找的非递归算法。
int SearchBin(SqTable T, KeyType key) {
	/**
	* 在有序表T中,用二分查找键值等于key的元素
	* 变量low、high分别标记查找区的下界和上界
	*/
	int low, high;
	low = 1;
	high = T.n;
	// low和high的区间长度不为0时继续查找
	while (low <= high) {
		// low+high本应该还要进行一个向下取整的,但是自考办给的答案忽略了那我们也忽略floor。
		mid = (low + high) / 2; // 对区间进行折半
		if (key == T.elem[mid].key) {
			return mid;
		} else if (key < T.elem[mid].key) {
			high = mid - 1; // 在前半区间查找
		} else {
			low = mid + 1; // 在后半区查找
		}
	}
	return 0;
}
  1. 已知丽数swap(R[min],R[i])功能是将记录R[min]和R[i]交换。试写出直接选择排序算法。
void SelectSort(List R,int n) {
	int min, i, j;
	// 每次循环,选出一个最小值
	for (i = 1; i <= n-1; i++) {
		min = i; // 假设第i个记录值最小
		for (j = i+1; j <= n; j++) {
			if (R[j].key < R[min].key) {
				min = j; // 记录下键值较小记录的下标
			}
			if (min != i) {
				swap(R[min], R[i]); // 将最小键值记录和交换第i个记录交换
			}
		}
	}
}

2020年10月

应用题

1.题29图给出了一个稀疏矩阵A,请写出该稀疏矩阵的三元组表。
在这里插入图片描述

答:
((0,1,5),(2,1,-1),(2,3,7),(3,1,6),(4,4,9),(5,5,8))


2.已知二叉树如题30图所示,请将该二叉树转换为对应的森林。
在这里插入图片描述
答:
在这里插入图片描述


3.设某通信系统中一个待传输的文本有6个不同字符,它们的出现频率分别是0.5、0.7、1.4、2.2、2.4、2.8。试画出哈夫曼树,并给出每个字符的哈夫曼编码。(要求任一结点的左孩子权值小于右孩子)

答:
在这里插入图片描述
出现频率为0.5的字符编码为1000
出现频率为0.7的字符编码为1001
出现频率为1.4的字符编码为101
出现频率为2.2的字符编码为00
出现频率为2.4的字符编码为01
出现频率为2.8的字符编码为11


4.选定散列函数为H(key) = key mod 13,实用链地址法建立值为 26,41,25,05,07,15,12,49,51,31,62 的散列表。

答:
在这里插入图片描述


5.对于给定的一组键值:83,40,63,13,84,35,96,57,39,79,61,15,请分别写出直接选择排序和冒泡排序的第一趟排序结果。

答:
直接选择排序:13,40,63,83,84,35,96,57,39,79,61,15
冒泡排序:40,63,13,83,35,84,57,39,79,61,15,96


算法设计题

1.写出一个将线性表的顺序表存储方式(数组a,表长为n)改成单链表存储方式(其头结点由头指针head指向)的算法。设函数头为:Node * CreateLinkedList(DataType a[], int n)

答:

Node * CreateLinkedList(DataType a[], int n) {
	head = (Node *)malloc(sizeof(Node)); // (1分)
	head -> next = NULL; // (1分)
	for (i = n; i > 0; i--) { // (1分)
		p = (Node *)malloc(sizeof(Node));
		p -> data = a[i - 1];
		p -> next = head -> next;
		head -> next = p;  // 整个for循环内容(3分)
	}
	return head; // (1分)
}

2.以二叉链表作存储结构,请写出二叉链表类型定义;利用二叉树遍历的递归算法,试编写求二叉树高度的算法。

答:

// 二叉链表类型定义如下:
typedef struct btnode {
	DataType data;
	struct btnode *lchild, *rchild;
} * BinTree;  // (2分)

// 求二叉树的高度的算法如下:
int Height(BinTree bt) {
	int lh, rh; // (1分)
	if (bt == NULL) return 0; // (1分)
	lh = Height(bt -> lchild); // (1分)
	rh = Height(bt -> rchild); // (1分)
	return 1 + (lh > rh ? lh : rh); // (1分)
}

2021年4月

应用题

1.设一个链栈的输入序列为A、B、C,请问共有几种可能的输出序列?试写出所得到的所有可能的输出序列。

答:
共有5种可能的输出序列 (1分)
它们分别是:ABC、BCA、BAC、CBA、ACB【每答出一个1分】


2.假设一棵二叉树的中序序列与后序序列分别为:B A C D E F G H 和 B C A E D G H F,请画出该二叉树。

答:
在这里插入图片描述


3.用Kruskal方法求题31图所示的图的最小生成树。(要求给出求解过程)
在这里插入图片描述
答:
在这里插入图片描述


4.根据二叉排序树的插入算法,从空树开始建立键值序列{ 50,48,24,55,53,90 }的二叉排序树,要求给出建立过程

(博主的答案,没找到自考办给的官方答案,如果有小伙伴找到了辛苦下方评论留下地址)
在这里插入图片描述


5.对于给定的一组键值:25,11,22,34,5,44,76,61,100,3,14,120,请分别写出直接插入排序和冒泡排序的第一趟排序结果。

(博主的答案,没找到自考办给的官方答案,如果有小伙伴找到了辛苦下方评论留下地址)
直接插入排序:11,25,22,34,5,44,76,61,100,3,14,120
冒泡排序:11,22,25,5,34,44,61,76,3,14,100,120


算法设计题

1.在单链表存储结构中,线性表的表长等于单链表中数据元素的结点个数,即除了头结点以外的结点的个数。通常通过头指针head来访问一个单链表。已知单链表结构如下:

typedef struct node {
	DataType data;
	struct node * next;
} Node, * LinkList;

设计求表长的算法,要求算法返回表长。

答:
暂无


2.以二叉链表作存储结构,请设计算法求二叉树的结点的个数。

答:
暂无


2021年10月

应用题

1.设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的站台,若列车2最先开出,则列车出站可能的顺序有几种?并写出这四辆列车所有可能的出站顺序。

(博主的答案,没找到自考办给的官方答案,如果有小伙伴找到了辛苦下方评论留下地址)
若列车2最先开出站,则列车出站可能的顺序有五种。
分别是:
2134
2143
2314
2341
2431


2.将题30图所示的森林转换成二叉树。
在这里插入图片描述

答:
在这里插入图片描述


3.写出题31图所示的有向带权图的邻接矩阵。
在这里插入图片描述

答:


4.已知题32图所示的二叉排序树中各结点的值分别为1~9,请写出图中结点A~I所对应的值
在这里插入图片描述

答:


5.已知键值序列 { 11,2,13,26,5,18,4,9 },设散列表表长为13,散列函数H(key) = key mod 13,处理冲突的方法为线性探测法,请给出散列表。

答:


算法设计题

1.读入 n = 100个整数到一个数组中,写出实现将该组数进行逆置的算法,并分析算法的空间复杂度。

答:


2.试写出二分查找的递归算法。

答:


2022年4月

应用题

1.二叉树的五种基本形态如题29图所示。
问1:子树用什么形状表示?
问2:分别写出题29-1图、题29-2图和题29-5图的形态
在这里插入图片描述
答:


2.给定无向图如题30图所示。
问1:计算D(v1)和D(v2)
问2:写出以顶点v0为起点到v3的所有简单路径。
在这里插入图片描述
答:


3.给定一组键值 { 45,38,66,90,88,10,25,45 } ,假设在排序过程中,前4个记录已按键值递增顺序重新排列,构成了一个有序序列为 { 38, 45, 66, 90 }。
问1:请写出应用直接插入排序方法对剩余键值排序的排序过程。
问2:直接插入排序方法是否稳定?

答:


4.设有m个顶点的无向图G,采用邻接矩阵作存储结构,在邻接矩阵上判断下列有关问题,给出简单的算法描述。
问1:图中有多少条边?
问2:任意俩个顶点i和j是否有边相连?
问3:任意一个顶点的度是多少?

答:


5.已知散列函数为H(key) = key mod 7,构造散列表如题33表,并用线性探测法解决冲突。若要用该散列表查找元素 25,32,68,请分别给出所需的比较次数。
在这里插入图片描述

答:


算法设计题

1.写出实现对一个n * n阶矩阵进行转置的算法。

答:


2.已知二叉链表的类型定义如下:

typedef struct btnode {
	DataType data;
	struct btnode *lchild, *rchild;
} * BinTree;

假设visit(bt)是一个已定义的过程,其功能是访问指针bt所指结点。设计在二叉链表上的先序遍历算法和中序遍历算法。

(博主的答案,没找到自考办给的官方答案,如果有小伙伴找到了辛苦下方评论留下地址)

//先序遍历【根左右】
void preOrder(BinTree bt) {
	if (bt !== NULL) {
		visit(bt);
		preorder(bt -> lchild);
		preorder(bt -> rchild);
	}
}
//中序遍历【左根右】
void midOrder(BinTree bt) {
	if (bt !== NULL) {
		preorder(bt -> lchild);
		visit(bt);
		preorder(bt -> rchild);
	}
}

2022年10月

应用题

1.题29-1图和题29-2图为俩种形态的二叉树。
问1:题29-1图、题29-2图各属于何种类型的二叉树?
问2:二叉树通常有哪俩类存储结构?
在这里插入图片描述

答:


2.无向图如题30图所示。
问1:列出所有简单回路。
问2:写出邻接矩阵。在这里插入图片描述
答:


3.设待排序的键值为 45,38,66,90,88,10,25,45。利用冒泡排序算法进行排序,已知第一趟排序后的键值为:38,45,66,88,10,25,45,90,请写出后续每趟排序的结果。

答:


4.设序列 { d c b a h e i f g } 和 { a b c h d i e f g } 分别是一棵二叉树的先序序列和中序序列,请画出该二叉树。

答:


5.给定表(Jan, Feb, Mar, Apr, May, Jul)。散列表的地址空间为 0 ~10,设散列函数H(x) == ⌊i / 2⌋,其中i为键值中第一个字母在英语字母表中的序号,要求画出以线性探测法解决冲突的散列表。

博主额外补充:⌊⌋符号是向下取整的意思,丢弃结果的小数部分。

答:


算法设计题

1.设计算法在整型数组A[n]中查找值为k的元素,若找到,则输出其位置 i(0 <= i <= n - 1),否则输出 -1 作为标志。

答:

2.设计算法按先序次序打印二叉树T中叶子结点的值。

答:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI真的快让我们失业了,从ChatGPT到Midjourney

参考文章&#xff1a; https://mp.weixin.qq.com/s/3RdHPPhYgDfB6KY6Y9Sk2A跟AI有关的新闻&#xff0c;一个接着一个。前一天你还和往常一样进入梦乡&#xff0c;第二天醒来就能被新的AI新闻“炸弹”震得心惊。 以ChatGPT为代表的AI语言模型&#xff0c;以Midjourney为代表的…

五、寄存器方式LED灯控制

寄存器方式LED灯控制 1、原理 电路图中相同网络标号表示它们是连接在一起&#xff0c;STM32F103ZET6的PC0-PC7 管脚连接D1-D8发光二极管阴极&#xff0c;如要使 D1 指示灯亮&#xff0c;只需控制 PC0 管脚输出低电平。 2、工程文件 Keil工程包含main.c、stm32f10x.h、start…

vue开发常用的工具有哪些

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

开启新航路,拓尔思发力AIGC市场 | 爱分析调研

2022年&#xff0c;随着AI聊天机器人GhatGPT在世界范围内持续火爆&#xff0c;极具创意、表现力、个性化且能快速迭代的AIGC技术成功破圈&#xff0c;成为全民讨论热点。 AIGC是指在确定主题下&#xff0c;由算法模型自动生成内容&#xff0c;包括单模态内容如文本、图像、音频…

【Leetcode】队列的性质与应用

文章目录225. 用队列实现栈示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;622. 设计循环队列示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;225. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&…

个人时间管理网站—Git项目管理

&#x1f31f;所属专栏&#xff1a;献给榕榕&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该专栏系为女友准备的&#xff0c;里面会不定时发一些讨好她的技术作品&#xff0c;感兴趣的小伙伴可以关注一下~&#x1f449;文章简介…

面试官:如何保证接口幂等性?一口气说了9种方法!

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 大家好&#xff0c;我是大彬~ 今…

idea 关于git使用总结分享

文章目录前言idea 关于git使用总结分享1. git 目录指定自己的git2. git 回滚到指定提交3. git 回滚某个文件4. 从远程仓库分支拉取最新代码5. 切换分支6. 上传到远程仓库7. git 关联上游服务8. 从上游分支拉取最新的代码9. 从上游仓库上取一个新的branch到远程仓库前言 如果您觉…

【LeetCode】二叉树的后序遍历(递归,迭代)

目录 题目要求&#xff1a;给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 方法一&#xff1a;递归 方法二&#xff1a;迭代 思路分析&#xff1a; 代码展示&#xff1a; 复杂度分析 方法三&#xff1a;迭代进阶 思路分析&#xff1a; 代码展示&a…

python玄阶斗技--tkinter库

目录 一.tkinter库介绍 二.功能实现 1.窗口创建 2.Button 按钮 3.Entry 文本输入域 4.text 文本框 5.Listbox 多选下拉框 6.Radiobutton 多选项按钮 7.Checkbutton 多选按钮 8.Scale 滑块(拉动条) 9.Scroolbar 滚动条 10.Menu 菜单栏 11. messagebox 消息框 12…

比肩ChatGPT的国产AI:文心一言——有话说

&#x1f517; 运行环境&#xff1a;chatGPT&#xff0c;文心一言 &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&am…

剑指offer-二维数组中的查找

文章目录题目描述题解一 无脑暴力循环题解二 初始二分法&#x1f315;博客x主页&#xff1a;己不由心王道长&#x1f315;! &#x1f30e;文章说明&#xff1a;剑指offer-二维数组中的查找&#x1f30e; ✅系列专栏&#xff1a;剑指offer &#x1f334;本篇内容&#xff1a;对剑…

怎么设计一个秒杀系统

1、系统部署 秒杀系统部署要单独区别开其他系统单独部署&#xff0c;这个系统的流量肯定很大&#xff0c;单独部署。数据库也要单独用一个部署的数据库或者集群&#xff0c;防止高并发导致整个网站不可用。 2、防止超卖 100个库存&#xff0c;1000个人买&#xff0c;要保证不…

脉诊(切脉、诊脉、按脉、持脉)之法——入门篇

认识脉诊何谓脉诊&#xff1f;脉诊的渊源脉诊重要吗&#xff1f;脉诊确有其事&#xff0c;还是故弄玄虚&#xff1f;中医科学吗&#xff1f;如何脉诊&#xff1f;寸口脉诊法何谓脉诊&#xff1f; 所谓脉诊&#xff0c;就是通过把脉来诊断身体健康状况的一种必要手段。 …

ShowMeAI周刊 | AI独立开发者:帆船旅行但月入万刀;创业吧!新黄金时代来了;资本看好哪些创业方向;被AI震麻的一周again

这是ShowMeAI周刊的第8期。聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;拆解AI独立开发者的盈利案例&#xff0c;关注中美AIGC的创业者们&#xff0c;并提供我们的商业洞察。欢迎关注与订阅&#xff01; | &#x1f440;日报&周刊合辑 ⌛ 『Danielle…

vue3 解决各场景 loading过度 ,避免白屏尴尬!

Ⅰ、前言 当我们每次打卡页面&#xff0c;切换路由&#xff0c;甚至于异步组件&#xff0c;都会有一个等待的时间 &#xff1b;为了不白屏&#xff0c;提高用户体验&#xff0c;添加一个 loading 过度动画是 非常 常见的 &#xff1b;那么这几种场景我们应该把 loading 加在哪…

JavaEE多线程-线程池

目录线程池Java标准库提供的线程池线程池的实现线程池 线程池和和字符串常量池, 数据库连接池一样, 都是为了提高程序的运行效率, 减少开销。 随着并发程度的提高, 当我们去频繁的创建和销毁线程, 此时程序的开销还是挺大的, 为了进一步提高效率, 就引入了线程池, 程序中所创建…

基于Java+SSM+Vue的旅游资源网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;200套&#xff09; 目录 一、效果演示 二、…

Java语言-----封装、继承、抽象、多态、接口

目录 前言 一.封装 1.1封装的定义 1.2访问修饰符的使用 二.继承 2.1继承的定义 2.2继承的方法 2.3继承使用注意点 三.多态 3,1多态的定义 3.2动态绑定 3.3方法重写 3.4向上&#xff08;向下&#xff09;转型 四.抽象 4.1抽象的概述和定义 4.2抽象的使用 五…

python例程:AI智能联系人管理的程序

目录《AI智能联系人管理》程序使用说明主要代码演示代码工程下载路径《AI智能联系人管理》程序使用说明 在PyCharm中运行《AI智能联系人管理》即可进入如图1所示的系统主界面。 图1 系统主界面 说明&#xff1a;在运行程序前&#xff0c;先将当前的计算机连接互联网&#xff…