自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 数据结构代码汇总(6)----终章---图论

由于图论算法书上的代码可读性以及可执行性不高,故本文会将这些算法一一实现,长度会比较长,这是最伟大的一集(^ _ ^)这些算法仅使用一个测试点进行测试,如果大家写的时候遇到了错误,请反馈给我。本系列文章到此结束,由于查找和排序书上的代码可抄性非常高,我就不再翻译了,大家对算法有什么不理解的地方欢迎评论,实在不理解的就请先记下来,因为我写的这些代码真的能跑。4.迪杰斯特拉最短路径,248页7.15,全书最想吐槽的算法,此算法书上的可读性极差(个人感觉),addtail算法根本不给,path的定义也不明确。

2024-06-18 16:49:27 462

原创 数据结构代码汇总(5)--二叉树

本文到此结束,哈夫曼树的难度就有一点大了,程序还是调试了一段时间的,本系列文章目前为止还没有参考网上大佬,仅参考了课本,目的就是为了用书上的思维写,帮助大家理解,下一章我们写图,我个人认为是数据结构最难的一部分了,加油。本算法使用逆中序的输出方法,结合了上面求高度的算法设计出来的,层深决定左右位置,先右子树,再根,最后左子树。最常用的就是递归遍历,这个算法非常简单,也非常容易理解,代码也比较简洁,其内容在书上163页。3.3通过遍历去创建二叉链表:167页算法6.7,也比较简单,此处不赘述。

2024-06-17 16:05:06 235

原创 数据结构代码汇总(4)---串和数组

因为前半部分书上的代码可读性比较高,大多数伪代码不需要做修改或修改很少即可实现,所以我的代码和书上的几乎一样,只是略作注解,后面书上的伪代码可读性就大大降低了,难度也提高了不少,所以后面的文章代码和书上的差别可能会大一些,由于本人水平有限,文章有错误在所难免,欢迎大家批评指正。串的基本操作比较简单,因为它是特殊的顺序表,内容为字符,所以它的基本操作和顺序表差不多,本文将不再赘述了,仅为大家复习一下串的BF匹配算法,KMP由于不考,本文也不讲了。4.一次定位的算法(139页算法5.3),此算法最常考。

2024-06-16 11:27:03 142 1

原创 数据结构代码汇总(3)---队列

3.入队出队:这些操作都比较简单,书上写的也是比较详细了,不再赘述,注意修改指针的语句需要对队列最大长度取余。本代码根据书上的代码改编而来,略作调整,书上的注释还是挺详细的,所以看我的文章和课本搭配食用更佳。本文将继续梳理数据结构常考代码,这篇文章将介绍队列相关操作及算法。队列的基本操作不难,这里仅展示代码,不再做过多的讲解。二、循环队列(101-102页)一、链队列(98-99页)三、经典算法:打印杨辉三角。本文完,欢迎评论区探讨交流。判断队空:front。

2024-06-15 09:30:00 492

原创 数据结构代码整理(2)

为了实现操作的统一性,栈顶指针初始值设为-1,这样每次进栈的操作都是先修改指针,再为相应地址赋值。同样的,在出栈的操作我个人更喜欢把栈顶元素作为返回值传出去,用指针也可以。为了减小难度,本代码采用c++完成,且与书上的代码有一定差距,因为书上的代码仅给出了思路,部分操作没有实现,此处补充了书上没有实现的操作,但是忽略了乘方运算。上篇文章主要复习了线性表的相关操作,本文将按照课本顺序介绍栈的相关操作。2.初始化以及进出栈,84页3.8,3.9初始化我自己补充的。多栈运算也不在期末考试范围内,此处略去。

2024-06-14 14:00:00 144

原创 数据结构代码汇总(1)

由于实验的考试可以开卷考,但是书上的伪代码有些过于难懂了,所以我打算借着整理复习资料的机会,把数据结构常考的代码用程序语言实现,作为一个模板,方便大家参考,当然,由于每道题之间有些差别,即使本系列文章是用程序语言实现,也不可能符合每道题的需求,只是为了便于大家理解。4.为了简化算法,一些必要的判断我就不写了,因为考试所考的操作大概率是符合条件的,比如本文章线性表插入操作,考试肯定是插在了允许插入的位置,那么判断插入位置的语句我就不写了,实际生产中请自行加入,以提高程序的鲁棒性。

2024-06-13 16:40:58 1565

原创 除留余数法创建哈希表

Hash通过把学号分段,转化成为数字,这相当于取余数,然后把对应的部分存在对应的结构体位置上,这是实现哈希的主要过程。查找的过程通过不停的判断学号位置,如果合规(在对应的学号区间)就继续找,不合规就返回0,在主函数中有判断的语句来实现。数据结构课大作业中有这么一个模块,通过学生学号创建哈希表,方便查找学生信息,那么我们就根据学生学号来创建一个哈希表。结构体是嵌套定义,按照年级,学院,班级的顺序定义,班级里面有学生指针。如果找到就输出学生信息(类的定义中实现了重载),没有找到就返回0。

2024-05-24 16:23:13 204

原创 Python爬取网站的子链接

在第二张图里面我们轻松地找到了计算机科学系的位置,它前面的链接即为作业的答案,所以我们只需要在利用bs生成的soup对象里面找到“计算机科学系”即可。首先导包,我们需要requests(登录网站),BeatifulSoup(解析),urljoin(其实也可以不用,用于网址连接起来)编程实现:利用requests爬虫库和beautifulsoup4解析库实现指定网站文章标题和对应网址爬取。编程实现爬取"计算机科学系"在"信息学院"主页上的网址。其次我们准备好url,就是华中农业大学信息学院网址。

2024-05-23 15:41:25 139 1

原创 图形窗口问题求解代码

紧接着我们就要输入“点击”的信息,每次点击我们需要对窗口的顺序做一个调整,这是这道题目的关键。每次我没得到点击的信息,需要把点击的信息依次从最上层(也就是窗口数组最后一个)的窗口进行比对,若点击点在当前窗口范围内,则输出窗口编号,然后把此窗口放在最上层(数组最后一个),其他的窗口顺序依次调整,此时需要用到顺序表的相关操作。然后我们开始输入窗口的数量以及“点击”的数量,接着输入窗口的信息,这些比较好实现。窗口的编号是始终不变的,这一点首先要明确,我一开始做题以为窗口编号是随位置变化而变化的,其实这是错误的。

2024-04-29 20:03:27 285

原创 通过集合判断元素是否相同

这个题可以用集合来做,集合具有互异性,只要每次给集合传入n个元素,判断其长度是否为1,即可判断这几个元素是否相同。每次从列表中给入连续的3个元素到集合中,通过集合判断元素是否相等,个人感觉这个算法挺妙的。本文完,欢迎评论区探讨。一开始是以字符串的形式输入,“,”没有什么功能,所以在判断的时候忽略掉了。最后打印的时候再添加上。

2024-04-18 20:37:55 214 1

原创 根据前序和中序遍历确定二叉树

接下来我们看左子树,根据先序序列可以得到A为左子树的根节点,然后再次根据根节点在中序序列里的位置来判断左右子树,所以BD是左子树,AEFC是右子树。要找到根节点,需要通过先序序列找到,显而易见,先序序列的第一个字母就是整个二叉树的根节点,所以我们在函数的最开始为它分配空间,同时赋好值。以本题为例,G为根节点。既然我们知道了根节点,那么我们就可以通过中序序列来分开左右子树了,显然,在根节点左边的为左子树,右边的为右子树。一道关于二叉树共同祖先的题目,不过这次我想分享的并不是这道题的思路,而是其中的一个算法。

2024-04-15 20:42:50 132

原创 蛇形矩阵代码思路

因为当n=3时后者会发生错误,n=3时,(n*n)/2=4,4应该在左下角,超出的是左下边界,若我们把4放在后半部分判断,则它就不符合超过左下角的处理规则了,所以把它放在前半部分处理,而前半部分结束条件是(n*n)/2+1还是(n*n)/2是对n=3非常关键的,读者不妨自行画一下,有助于理解。当我把签到题写完后,便想起了作业题里面的内容,一道是刚才写的螺旋矩阵,另一个还是矩阵,蛇形矩阵,那么这篇文章将为大家介绍一下这道题目并且分享一下我的代码思路。还是先上代码,然后分析思路,这次我把一些思路放在注释当中。

2024-04-15 19:06:03 1166 1

原创 螺旋数字矩阵的思路

当坐标变化后如果遇到边界或到了已经打印的位置,就按照设定方向的反方向后退一格(即上一个打印的位置),然后换方向,此时只有i或j发生变化,而k不变化,因为下一个坐标1值就是k现在的值。

2024-04-14 18:51:16 1706 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除