logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【数据结构与算法】最短路径算法

顾名思义根据需求,可以获取的最优的路径.比如说:我标的数值,就是时间,那么假如我们是A点到D点.那么我们可以看到有三条路径:A->E->D所花时间:36分钟A->C->D所花时间:25分钟A->B->D所花时间:26分钟那么如果我们根据时间来看待问题的话,那么A->C->D就是我们的最短路径.当然也可以其他的信息作为我们的判断,我们称之为权重.下面我们将用深度优先的方式来实现最短路径算法.

文章图片
#算法#数据结构#c++ +1
【数据结构与算法】邻接列表的深度优先遍历

A->E->D,当我们到D的时候,我们无法再继续下去,那么我们就回退到E,E又回退到A,然后又可以访问到C,C的下一个我们已经访问过,就可以再回退到A,如果又遍历到B,B的下一个已经访问过,我们继续回退.这样所以的节点就访问到了,这就是深度优先遍历,当我们访问到一个节点后,那么继续访问该节点能访问的节点,直到走不通了再回退.因为我们是从某个点进行的遍历,如果这种情况,我们只对对A进行深度遍历的话,

文章图片
#深度优先#算法#数据结构 +2
【数据结构与算法】迷宫求解------回溯法

当我们想要找到迷宫的出口,那我们在计算机中,然后操作,可以将每个位置都人栈,然后进行上下左右的路的判断,能否通过,若是死路,就将这个点出栈,回退到刚刚的栈,再判断其他的道路.在同行同列且相邻且在二维数组范围内,值为1就是通道就可以下一步.就当前入口点入栈,然后做标记改为2,就是我们走过的地方.就出栈,进行判断上一个路口,是否可以其他的下一步.地图的结构就是一个二维数组,初始化就是进行赋值.只有我们

文章图片
#数据结构#c语言#c++ +1
【数据结构与算法】哈希表的顺序存储实现

当我们不需要大量的删除和插入数据时,那么这种哈希顺序表的优点就比哈希链表大.我们哈希表的插入和删除就是对顺序表的插入和删除,所以我们来设置顺序表接口.哈希函数找到目标顺序表,然后姚先判断关键值存不存在,不存在才可以插入.还记得乾坤大罗伊吧,哈哈,删除就是往前移动,删除边界值,直接减减.上一章是哈希链表,这一次我们结合顺序表,来一个哈希顺序表.哈希表数组里面直接是顺序表,顺序表中是数据.先找到在那个

文章图片
#散列表#哈希算法#数据结构 +3
【数据结构与算法】链表

链表的优势一看便知,就是插入删除数据不需要移动大量的数据,可以直接进行.其缺点也是显而易见,不方便访问,每次都需要从头遍历.任意位置插入和删除都需要找到前一个节点位置,需要从头节点开始,区别是循环条件插入是p删除是p->next获取和查找因为头节点没有数据,都是从头节点的下一个节点开始.我们需要的是最后一个节点,还是遍历完,最后一个节点的循环条件是p->next,遍历完是p获取前一个节点循环条件是

文章图片
#链表#数据结构#学习 +2
【数据结构与算法】二叉树——哈夫曼编码

那么刚好就像我们树的叶子,我们只需要将这些字符放在树的叶上,就能保证每一个字符的编码都不一样,从根节点向左我们记作0,向右我们记作1.因为是优先级队列,不用在乎插入在什么位置,这里是用的前插法,是为了新结合的节点与频率相同节点先进行结合.如果我们对出现的频率进行计算:空格出现5,w出现4,l出现4,e出现2,i出现2,r出现1,u出现1.队列里面装的是树.树包含值就是字符,还有权重就是出现次数,还

文章图片
#数据结构#算法#学习 +2
【数据结构与算法】邻接列表的广度优先遍历

先对顶点入队,然后访问之后出队,再将顶点的邻接顶点入队,一直这样循环下去直到队列为空.访问过的记得要设置true.广度顾名思义就是广,哈哈,如果我们从A点开始的话.将一个顶点先入队,然后出队,再将其相邻的节点入队.对于这种按顺序的,先进先出的,我们可以采用队列.那么顺序就是A->E->C->B->D.这里我们用的c++标准库自带的队列.2024年8月14日20:13:14。

文章图片
#宽度优先#算法#数据结构 +2
【数据结构与算法】哈希表——字符串匹配

跟原来一样,只不过关键码的类型不在是整型了,c++中的字符串是const char*,所以这里用的const void*.原来我们讲的都是以整数作为关键码,那么我们可不可以用字符串来作为关键码呢?可以将不同的字符串转换成为不同的数字,就方便我们进行取余分组了.这是关键码的类型改变了一下,其他都一样,就不讲了.答案是基本思想还是不变,哈希函数求余来进行分组.那么如果我们也想用哈希表存储,我们该怎么办

文章图片
#散列表#数据结构#学习 +2
【数据结构与算法】A*算法——自动寻路

如果越界了不可以,因为是一个二维数组,如果是障碍物不可以,这里我们在二维数组中设置的值为1的是障碍物.,如果在closeList的也不可以,因为我们已经走过了.对于周围每个可以走通的格子我们进行判断是否在openList里面,如果没有就加入,有的话,就判断需不需要进行更新.判断的依据就是G是否更小,因为H都是一样的.很明显,我们要得到最短的,那么就需要比较,就需要我知道所有的路径,然后比较出最短的

文章图片
#算法#数据结构#学习 +1
【数据结构与算法】栈的应用——表达式求值

我想了一下,我主要写博客的目标还是说为了自己,自己容易忘记,相当于自己来过一遍,所以这是写给我自己的,当然如果你也遇到了相同的问题,那么不防我们可以一起探讨一下.

文章图片
#数据结构#c语言#c++ +1
    共 16 条
  • 1
  • 2
  • 请选择