厦大数据结构实验课
FFFade_
XMU.2021.
展开
-
9.2 德才论
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。原创 2022-12-12 14:57:51 · 179 阅读 · 0 评论 -
8.4 字符串关键字的散列映射
给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位;再用除留余数法将整数映射到长度为P的散列表中。例如将字符串AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序映射到整数0~25;再通过移位将其映射为3×32 2 +4×32+6=3206;然后根据表长得到3206%1009=179,即是该字符串的散列映射位置。发生冲突时请用平方探测法解决。原创 2022-12-10 17:58:46 · 266 阅读 · 0 评论 -
8.3 是否同一棵二叉搜索树
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。原创 2022-12-10 17:54:17 · 194 阅读 · 0 评论 -
8.2 二分查找
请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。原创 2022-12-10 17:52:03 · 160 阅读 · 0 评论 -
8.1 QQ帐户的申请与登陆
实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤10 5 ),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字原创 2022-12-10 17:49:20 · 245 阅读 · 0 评论 -
7-1 旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。原创 2022-11-28 17:39:31 · 728 阅读 · 0 评论 -
7-2 任务调度的合理性
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。但是需要注意的是,对一组子任务,并不是任意的任务调度都是一原创 2022-11-28 17:32:09 · 277 阅读 · 0 评论 -
7-3 最短工期
一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。原创 2022-11-28 17:26:49 · 1231 阅读 · 0 评论 -
7-4 哈利·波特的考试
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来原创 2022-11-28 17:14:45 · 213 阅读 · 0 评论 -
5.4 交换二叉树中每个结点的左孩子和右孩子
以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。原创 2022-11-11 16:42:42 · 1447 阅读 · 0 评论 -
5.2 小字辈
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。原创 2022-11-11 12:07:17 · 108 阅读 · 0 评论 -
5.3 是否完全二叉搜索树
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。原创 2022-11-11 11:04:07 · 132 阅读 · 0 评论 -
5.1 修理牧场
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。原创 2022-11-11 09:25:40 · 209 阅读 · 0 评论 -
4.4 完全二叉树的层序遍历
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。原创 2022-10-28 10:10:49 · 132 阅读 · 0 评论 -
4.3 树的遍历
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。原创 2022-10-28 10:04:10 · 84 阅读 · 0 评论 -
4.2 顺序存储的二叉树的最近的公共祖先问题
设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。原创 2022-10-28 10:00:42 · 323 阅读 · 0 评论 -
4.1 列出叶结点
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。原创 2022-10-28 09:55:25 · 191 阅读 · 0 评论 -
【二叉树】由后序遍历和中序遍历推出前序遍历
第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。题目描述:根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。原创 2022-10-27 20:03:59 · 1151 阅读 · 0 评论 -
线索二叉树的中序构造及遍历
中序遍历的顺序:左根右1.一路往左找到最左子树的最左节点2.父节点的右节点不为空则以该节点为新的父节点重复13.右节点为空则向上回溯线索化:Tag=0表示有直接节点,Tag=1表示回溯节点。根据遍历顺序建立前驱与后继指针。2.父节点的右节点不为空则以该节点为新的父节点重复1。1.一路往左找到最左子树的最左节点。中序遍历的顺序:左根右。3.右节点为空则向上回溯。原创 2022-10-22 11:00:49 · 281 阅读 · 0 评论 -
3.4 【模板】KMP字符串匹配
KMP字符串匹配算法原创 2022-10-14 11:53:15 · 318 阅读 · 0 评论 -
矩阵相乘A*B
矩阵相乘A*B。原创 2022-10-14 11:11:44 · 93 阅读 · 0 评论 -
3.0 稀疏矩阵加法
给定两个矩阵A和B,求其和矩阵C=A+B。原创 2022-10-14 10:31:13 · 156 阅读 · 1 评论 -
3.1 最长对称子串
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定,最长对称子串为,于是你应该输出11。原创 2022-10-14 10:28:03 · 83 阅读 · 0 评论 -
2.4 堆栈操作合法性
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。原创 2022-09-30 10:58:37 · 177 阅读 · 0 评论 -
2.3 求解迷宫从入口到出口的路径
求解迷宫从入口到出口的路径。输入一个迷宫,求从入口通向出口的可行路径。原创 2022-09-30 10:57:42 · 1308 阅读 · 0 评论 -
2.2 银行业务队列简单模拟
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。原创 2022-09-30 10:52:55 · 229 阅读 · 0 评论 -
2.1 彩虹瓶
彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆上去。原创 2022-09-30 10:50:57 · 210 阅读 · 0 评论 -
2.0 后缀表达式求值
题目:后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行。运用后缀表达式进行计算的具体做法:建立一个操作数栈S。然后从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项操作数进行运算,再将运算的结果代替原栈顶的n项压入栈中。原创 2022-09-30 10:48:09 · 429 阅读 · 2 评论