![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
华农专业课拯救计划
文章平均质量分 51
c栈算法小辰哥
命运从来不语,但它却回答了所有问题
展开
-
华农专业课拯救计划:模拟卷
现输入一组数据,以0作为输入的结束,从插入排序、希尔排序、快速排序、堆排序四种排序方法中挑选一种稳定的排序算法,对输入的数据进行从大到小的排序,给出排序后的结果。可以用连通网来表示n个城市以及n个城市之间可能设置的通信线路,其中网的顶点表示城市,边表示两个城市之间的线路,赋于边的权值表示相应的代价。注意点:稳定的算法:冒泡,插入,归并,不稳定:快排,希尔,堆,时间复杂度为nlongn的为堆,归并,快排,除了希尔剩余为n方,且希尔介于二者之间,而赶时间选快排,省空间选堆排,稳定性归排,原创 2024-06-15 08:24:21 · 583 阅读 · 0 评论 -
使用python从mysql中读取一个表格于文件中,并在Label中显示
【代码】使用python从mysql中读取一个表格于文件中,并在Label中显示。原创 2024-06-05 09:35:02 · 81 阅读 · 1 评论 -
python期末拯救计划:文件操作
9.读excel文件,首先要import xlrd,workbook=xlrd.open_workbook(文件),返回工作簿对象,使用workbook.nsheets返回sheet的数目,workbook.sheet()返回所有sheet对象的list,workbook.sheet_by_name(名字),返回特定名字的sheet对象,f=csv.writerrow(列表,一般是list=['1','2','3','4'])4.f.seek(数字),0代表开头,1代表当前位置,2代表结尾。原创 2024-06-01 17:46:59 · 220 阅读 · 3 评论 -
数据结构实验期末押题卷2
1.链表:输出倒数第k个节点。3.哈夫曼树与哈夫曼编码。2.二叉树:层序遍历。原创 2024-05-30 22:04:50 · 89 阅读 · 3 评论 -
数据结构实验期末押题卷1
3.二叉树:两种遍历建树以及寻找共同祖先。4.图论:图的连通性与深度优先搜素。2.栈和队列:使用两个栈实现队列。1.链表部分:反转链表。原创 2024-05-29 18:02:57 · 151 阅读 · 3 评论 -
数据结构期末拯救计划:图的高阶算法
首先是一个常规的邻接表的存储方式,表示边的node数组以及头节点数组,in代表入度,data代表顶点数据,flag代表是否已经排序,edge代表边,再来解析排序本体,首先是排序数组res和邻接表G,首先定义一个栈,并且当点的入度为0时(表示是顶点),则入栈,当栈不为空的时候,提取栈顶元素并出栈,并将栈顶元素加入到res中,然后把这个顶点的边拿出来,让边的终点的入度减1,然后再对邻接表进行遍历,如果有新的入度为0的节点存在则重新入栈,然后就是邻接表的创建。当i和j相等的时候,保证对应的整数为0。原创 2024-05-29 08:37:26 · 909 阅读 · 3 评论 -
数据结构期末拯救计划:图的初阶应用(重点)
图的深度优先遍历,和普通的深度优先搜素一样,设置一个以形参引用形式的visit数组,以及引用形式的vector数组,以及位置pos(从1开始),注意为了从1开始,要多存储一个节点,递归出口为该节点以访问,每次打印数据都将visit的该位置赋值为true,再沿第一个节点的边进行遍历,如果边未访问则访问边,否则继续遍历。警察抓到了 n 个罪犯,警察根据经验知道他们属于不同的犯罪团伙,却不能判断有多少个团伙,但通过警察的审讯,知道其中的一些罪犯之间相互认识,已知同一犯罪团伙的成员之间直接或间接认识。原创 2024-05-24 16:54:43 · 326 阅读 · 3 评论 -
数据结构期末拯救计划:哈夫曼树与哈夫曼编码
现在来解析两个函数,outpom为输出哈夫曼编码,limit为树根节点所在位置,pos为查找位置,从查找位置的父节点开始打印,如果pos是左节点打印0,是右节点打印1,然后向上继续查找(哈夫曼编码为从根节点到子节点的路径),由于以上原因,要反向打印,翻译函数解析如下:next为树根位置,输入哈夫曼编码,再遍历,寻找从根到给定节点的路径,如果为0则移向左孩子,如果为1则移向右孩子,如果已经移动到叶子节点则打印该点的字母编号,并将next回退到根节点位置。另,求解某字符串的哈夫曼编码,求解某01序列的译码。原创 2024-05-23 19:43:06 · 428 阅读 · 3 评论 -
数据结构期末拯救计划:树的线索化和树状打印
思路:set函数,使用一个前驱节点以改变left,如果根节点为空则返回,左节点为空则赋值前驱节点,如果前驱节点的右节点为空且前驱节点不为空,将它的后继节点赋值为当前根节点,并且更新前驱节点为当前节点,前序打印的思路首先找到最左侧且不是线索节点的节点,并且打印数据,饭后一直打印后继节点,并且结束后让根节点移动到右节点,creat就是按普通二叉树的构建。【问题描述】创建一棵二叉树,接着中序线索化该二叉树,然后编写相应函数遍历该中序线索二叉树。【输入形式】二叉树拓展的前序遍历序列。【输出形式】中序遍历序列。原创 2024-05-23 09:06:17 · 103 阅读 · 3 评论 -
数据结构期末拯救计划:二叉树(重点)
编写程序,计算二叉树中叶子结点的数目并输出;以下为层序遍历代码,层序遍历使用队列作为载体,并先将节点入队列,在队列不为空的时候,首先记录队列的元素数并且为返回数组开新的一层,然后遍历剩余元素(每次队列都是一层),每次出队列并且更新返回数组,如果有左右节点,则入队列准备成为新的一层。关键就是寻找公共祖先的函数,这是一个递归函数,当root为两节点任意一节点或者为空时返回root,然后递归调用左右节点,此时,这两个节点有两种情况,都在左,都在右或者一左一右,第一种返回左,第二种返回右,第三种返回根节点。原创 2024-05-22 23:01:38 · 919 阅读 · 3 评论 -
数据结构期末拯救计划:kmp算法
首先应付考试需要了解kmp的基础知识来做选择题,首先需要通过例子来了解一下最长相等前后缀,如abcdab的就是ab,aba的就是a,abba的也是a,还有一点需要特殊注意,如果选择题涉及到移动,只需记住把目标串从主串的最长相等前缀移到最长相等后缀即可。【问题描述】KMP算法是字符串模式匹配算法中较为高效的算法之一,其在某次子串匹配母串失败时并未回溯母串的指针而是将子串的指针移动到相应的位置。【输出形式】每组数据输出1行,输出后一个字符串在前一个字符串中的位置,如果不匹配,则输出0。原创 2024-05-21 22:25:59 · 165 阅读 · 3 评论 -
数据结构期末拯救计划:字符串
本题思路:本题采用一种简单的方法寻找子串,即从中间一点或两点(字符串长度为奇数为一点,偶数为两点,为了节省讨论直接全部试一遍),一个向左一个向右移动,直到越界或者不构成回文条件为止,注意截取时由于left越界需要加1,为什么截取长度为right-left-1,由于此时left为左边界的左侧元素,right为有边界的右侧元素,按照传统的长度计算right-left+1,而此时right和left的越界导致长度增加了2,所以right-left+1-2=right-left-1。(串),另一个为不包含*和?原创 2024-05-21 17:06:57 · 288 阅读 · 3 评论 -
数据结构期末拯救计划:队列
题目整体思路:将元素入栈,遵循先进后出的原则,再存储到队列中,此时存储顺序变为3,2,1,而队列遵循先进先出的原则,输出时也是1,2,3,利用这个性质,我们也可以实现两个栈实现队列以及两个队列实现栈的操作。【问题描述】已知Q是一个非空队列,S是一个空栈。仅使用少量工作变量以及对队列和栈的基本操作,编写一个算法,将队列Q中的所有元素逆置。队列也是一种典型的数据存储结构,遵循先进先出的原则队尾进元素,队头删元素,下面看看它的基本操作。【输入形式】输入的第一行为队列元素个数,第二行为队列从首至尾的元素。原创 2024-05-21 10:19:31 · 187 阅读 · 3 评论 -
数据结构期末拯救计划:链表的配套代码
2.双指针的典型应用:链表合并。3.环形链表的约瑟夫环问题。原创 2024-05-21 10:18:05 · 108 阅读 · 3 评论 -
数据结构期末拯救计划:栈
1.栈是一种典型的数据存储结构,存储中有先进后出的特点,下面看看栈的基本操作。【问题描述】请用“顺序栈”解决进制转换问题,请注意:不采用顺序栈,不给分。【输入形式】十进制数据和待转换的进制。3.括号匹配问题,也就是我压的一道题。【样例输入2】2608 16。2.顺序栈的应用:进制转换。【样例输入1】1348 8。【输出形式】转换后的数据。【样例输出1】2504。【样例输出2】A30。记忆这道题,按模板记。原创 2024-05-21 10:17:42 · 117 阅读 · 3 评论 -
数据结构期末拯救计划:单链表
这道题的方法非常典型,首先将数据存在两个链表上,根据双指针的算法,两个链表都需要进行排序以实现单调性,然后同时移动双指针,第一个链表的系数值大于第二个链表的系数值或者相反,则把该节点后插到新链表的后面,如果等于就相加并同时移动,循环结束条件为一个表遍历完,后续只需把没有遍历完的表接到新链表后面即可。【输入形式】第一行第一个数据n代表多项式的总项数,后面的2*n个数据,每一对代表对应的某一项的系数和指数,第二行类似,第三行的数据x要查询第几项。【输入形式】输入n和m的值,其中n为总人数,m为报数的密码。原创 2024-05-18 16:25:44 · 424 阅读 · 3 评论 -
华农专业课拯救计划:验证二叉搜索树序列
【问题描述】输入一个整数数组,判断该数组是不是某的的结果。如果是返回true,否则返回false。【输入形式】输入任意长度的数组,数字之间空格分开【输出形式】true 或者 false【样例输入】输入5 7 6 9 11 10 8【样例输出】true【样例说明】由于这一整数序列是如下树的后序遍历结果:8/ \6 10因此返回true。【评分标准】暴力求解法不得分。原创 2024-05-17 20:42:06 · 234 阅读 · 3 评论 -
华农专业课拯救计划:二叉搜索树的进阶应用
【问题描述】请根据输入的数据创建一棵二叉排序树。然后执行相应操作。1 删除某一值为x的结点2 求指定结点y在二叉排序树中的层数【输入形式】结点数据,以0代表结束输入。待删除的x,待求层数的y【输出形式】创建好的二叉排序树的拓展的前序遍历结果删除后的二叉排序树的中序遍历结果y所在的层数【样例输入】1011【样例输出】4【样例说明】若待删除的结点包含左右子树,则以其左子树的最右结点代替它。原创 2024-05-17 20:12:43 · 263 阅读 · 3 评论 -
华农专业课拯救计划:利用前序与中序遍历建树并判断是否是二叉排序树
【问题描述】课后作业第6题。试写一个判别给定二叉树是否为二叉排序树的算法。以前序遍历序列和中序遍历序列给出该二叉树的结点,并创建该二叉树。然后再进行判断。请注意,树中结点关键字可能相同。【样例输入1】【样例输出1】true【样例输入2】6 4 7 8 04 7 6 8 0【样例输出2】false【提示】若直接根据给定的中序是否有序来进行判断,此种判断方法不得分。务必先创建二叉树的链式存储,再对其进行判断。原创 2024-05-17 19:53:02 · 319 阅读 · 3 评论 -
华农专业课拯救计划:拓扑排序
【问题描述】由某个集合上的一个偏序得到该集合上的一个全序,这个操作被称为拓扑排序。偏序和全序的定义分别如下:若集合X上的关系R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。设R是集合X上的偏序,如果对每个x,y∈X必有xRy或yRx,则称R是集合X上的全序关系。由偏序定义得到拓扑有序的操作便是拓扑排序。拓扑排序的流程如下:1. 在有向图中选一个没有前驱的顶点并且输出之;2. 从图中删除该顶点和所有以它为尾的弧。重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止。原创 2024-05-16 11:35:43 · 680 阅读 · 3 评论 -
华农专业课拯救计划:佛洛依德算法
【问题描述】对于下面一张若干个城市,以及城市之间距离的地图,请采用弗洛伊德算法求出所有城市之间的最短路径。【输入形式】顶点个数n,以及n*n的邻接矩阵,其中不可达使用9999代替【输出形式】每两个顶点之间的最短路径和经过的顶点注意:顶点自身到自身的dist值为0,path则为该顶点的编号【样例输入】4【样例输出】原创 2024-05-15 20:08:45 · 769 阅读 · 3 评论 -
华农专业课拯救计划:迪杰斯特拉算法
【问题描述】在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。可将迪杰斯特拉算法描述如下:在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并按照以上描述中的算法求出源点至每一个其它顶点的最短路径长度。【输入形式】输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源点为s。其中n不超过50,s小于n。原创 2024-05-15 18:58:16 · 1345 阅读 · 4 评论 -
华农专业课拯救计划:普利姆算法
为什么这个搞不定?原因就在于遍历的方式上,第二种路径更为完整,第一种会缺东西。原创 2024-05-12 08:52:40 · 237 阅读 · 3 评论 -
华农专业课拯救计划:窗口问题(数据结构第9周实验)
【问题描述】在某图形操作系统中,有N个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。现在我们希望你写一个程序模拟点击窗口的过程。【输入形式】输入的第一行有两个正整数,即N和M。原创 2024-05-12 08:34:06 · 389 阅读 · 3 评论