![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MOOC数据结构习题
文章平均质量分 62
巴山夜雨绵绵
这个作者很懒,什么都没留下…
展开
-
10-排序6 Sort with Swap(0, i) 分数 25
Swap(0, *)原创 2024-03-30 21:42:59 · 520 阅读 · 0 评论 -
02-线性结构4 Pop Sequence
按1,2,3,...,N和pop随机。接着是K行,每一行包含N个数字的弹出序列。分析:连续的pop出来的是降序数列,如果后一个数比前一个数大,那这两个数之间一定有push,按照连续降序给数列分段,比如5643721分段为0/5/643/721(在最前面加了一个0,这样在后面方便比较),在每一个子段里面数据一定是降序的,否则输出NO,每一个子段的第一个数是按升序排列的,否则输出NO,比如3217564,分段后0/321/75/64,其每一个子段第一个数排列出来是0,3,7,5,不是升序的。原创 2023-05-12 00:23:29 · 209 阅读 · 0 评论 -
07-图6 旅游规划 分数 25
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。原创 2024-03-30 17:28:40 · 322 阅读 · 0 评论 -
10-排序5 PAT Judge 分数 25
要注意很多细节,详细看注释,注意排名中的人提交的某题没有通过编译,则显示0。原创 2024-03-30 20:48:07 · 443 阅读 · 0 评论 -
07-图5 Saving James Bond - Hard Version 分数 30
然后不断在不能到的鳄鱼与vector里面的鳄鱼之间计算距离,更新vector和次数和pre。用结构体记录每个鳄鱼坐标、需要跳的次数、前一个鳄鱼下表以及第一跳距离。用一个vector记录第一次跳能到的鳄鱼,将这些鳄鱼的次数更新为1。最后在可以跳出去的鳄鱼之间排序,输出第一跳最小的。原创 2024-03-30 16:30:48 · 920 阅读 · 0 评论 -
06-图2 Saving James Bond - Easy Version 分数 25
【代码】06-图2 Saving James Bond - Easy Version 分数 25。原创 2024-03-30 00:10:40 · 483 阅读 · 0 评论 -
06-图1 列出连通集 分数 25
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。原创 2024-03-29 23:29:02 · 115 阅读 · 1 评论 -
04-树5 Root of AVL Tree 分数 25
【代码】04-树5 Root of AVL Tree 分数 25。原创 2024-03-29 22:59:58 · 335 阅读 · 1 评论 -
05-树9 Huffman Codes 分数 30
每个输入文件包含一个测试用例。对于每种情况,第一行给出一个整数N (2≤N≤63),然后后跟一行包含所有N不同的字符及其频率。下一行给出一个正整数M (≤1000),然后接着是M学生提交的材料。每个学生提交的作品包括N行。进行哈夫曼编码时用优先队列存储指向结构体的指针(或者可以用暴力每次找最小的两个)然后先计算最短码长,与学生的进行比较,若相同则检查学生的是否是前缀码。原创 2024-03-29 21:01:35 · 942 阅读 · 1 评论 -
04-树6完整的二叉查找树 分数 30
将读入的n个数排序,然后计算当前根的左子树和右子树分别有多少节点,在当前[l,r]区间中,左子树是[l,l+lt-1],右子树是[r-rt+1,r],lt、rt是左、右子树节点数,根为mid = l+lt = r-rt。对于每个测试用例,在一行中打印相应的完整二叉查找树的层次顺序遍历序列。一行中的所有数字必须用空格隔开,并且行尾不能有多余的空格。现在给定一系列不同的非负整数键,如果要求树也必须是CBT,则可以构造唯一的BST。完全二叉树(CBT)是一种完全填充的树,可能除了底层是从左到右填充的。原创 2024-03-27 22:50:06 · 539 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树 分数 25
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。原创 2024-03-27 21:51:34 · 332 阅读 · 0 评论 -
05-树9 Huffman Codes
使用了堆,在前面堆的章节中,元素使用数组存储,但这里函数insert和delete都返回指针,所以建立最小堆要使用结构体指针数组。主要思路:读入第一行数据,建立哈夫曼树,计算最优编码长度,然后读入学生数据,先计算编码长度,再检查是否符合前缀码。堆的插入和删除如下(dt[] 是结构体指针数组,是最小堆)题意:给出字符和频率,检查学生的答案是不是最优解。但在视频中给出的建哈夫曼树的方法(如下)然后按照视频的方法建造树。原创 2023-05-23 15:31:54 · 71 阅读 · 1 评论 -
02-线性结构3 Reversing Linked List
题意:给定一个常数K和一个单链表L,假设你把L上每K个元素的链接反过来,比如给定L是1→2→3→4→5→6,如果K=3,那么你必须输出3→2→1→6→5→4;如果K=4,则必须输出4→3→2→1→5→6。对于每种情况,第一行包含第一个节点的地址,一个正N (≤10 5 )和正K (≤N),前者是要反转的子列表的长度。节点的地址是5位非负整数,NULL用-1表示。然后是N行,每一行描述一个节点,格式如下: 接下来寻址数据 其中Address是节点的位置,Data是整数,Next是下一个节点的位置。原创 2023-05-11 20:48:27 · 75 阅读 · 1 评论