自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分查找数据结构c语言

搜索过程中从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束,如果某一特定元素大于或则小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间开始比较,如果在某一步骤数组为空,则代表找不到。4.如果要查找的元素大于中间元素,则在数组的右半部分(从mid+1到high)继续搜索,更新low=mid+1,high保持不变。5.如果要查找的元素小于中间元素,则在数组的左半部分(从low到mid-1)继续搜索,更新high=mid-1,low保持不变。

2024-06-07 16:53:38 179

原创 Dijkstra算法数据结构c语言

对于与节点相邻的每个节点v,检查是否可以通过u找到一个更短的路径到v1,换句话说,如果dlist[u]+weight(u,v)(即从源节点到u的距离加上从u到v的边的权重)小于dlist[v],则更新dlist[v]的值为dlist[u]+weight(u,v);Dijstra算法是一种用于解决带权图中单源最短路径问题的贪心算法,也就是说,给定一个图和一个源节点,该算法会找到从源节点到图中所有其它节点的最短路径。在所有未访问的节点中,选择距离最小的节点u(即dilist[u]的值最小)

2024-06-07 15:51:15 589

原创 拓扑排序数据结构c语言

在下面的代码中,TopSort函数就是用来实现拓扑排序的,它首先找出所有入度为0的节点,然后不断从队列中取出节点并遍历其邻居节点,直到队列为空。最好检查是否所有节点都被访问过,加设visited,如果所有节点都被访问过,则无环,否则有环。拓扑排序是对有向图的顶点进行排序,使得对于从顶点A到顶点B的任意一条有向边AB,在排序记录中顶点A都出现在顶点B的前面,进行拓扑排序的一个常见算法是kahn算法。需要注意的是,拓扑排序的结果可能不是唯一的,因为图中可能存在多个满足条件的排序序列。

2024-06-05 15:37:43 103

原创 Floyd算法数据结构c语言

Floyd算法,也被称为Floy-Warshall算法,是一种经典的图论算法,用于找出加权图中所有顶点对之间的最短路径,这中算法可以有效地处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包,Floyd算法利用动态规划的思想,通过逐步更新节点之间的路径长度来求解问题。

2024-06-05 14:07:28 588

原创 邻接矩阵kruskal算法数据结构c语言

克鲁斯卡尔算法是一种按权值递增次序选择合适的边来构造最小生成树的方法,克鲁斯卡尔算法在求解最小生成树时,通常使用并查集数据结构来辅助判断边的两个顶点是否属于同一个集合(即是否在同一棵树中),这是因为克鲁斯卡尔算法需要不断地从未连接的边中选择最小边,并将其添加到最小生成树中,直到所有顶点都连接在一起。在这个过程中,并查集的主要作用是快速判断两个顶点是否属于一个集合,以及合并两个集合,这样可以确保在添加边的过程中,不会形成环,从而得到一颗最小生成树。2.初始化并查集,每个顶点都是一个独立的集合。

2024-06-02 21:35:18 139

原创 Prim算法数据结构c语言

在对无向图进行遍历时,若是连通图,仅需调用遍历过程(DFS和BFS)一次,从图中的任一顶点出发便可以遍历图中的各个顶点,若是非连通图,则需多次调用遍历过程,每次调用得到的顶点集连同相关的边就构成=了图的一个连通分量,设G=(V,E)为连通图,则从图中的任一顶点出发遍历图时必定将E(G)分成两个集合T和B,显然,G’=(V,T)是G的极小连通子图,即G’是G的一颗生成树,对于非连通图,每个连通分量中的顶点集和遍历时走过的边一起构成一颗生成树,各连通分量的生成树组成非连通图的生成森林。下面是prim算法实现。

2024-06-02 16:47:03 183

原创 邻接表BFS(广度优先)算法数据结构c语言

BFS,这里的运行结果是各连通分量的顺序排列。

2024-06-02 14:06:11 151

原创 邻接表BFS(深度优先算法)数据结构c语言

实际上这里打印的是各连通分量的排序组合。

2024-06-01 20:58:18 133

原创 邻接矩阵BFS(广度优先遍历)算法数据结构c语言

这里用队列辅助,输出结果有一定的顺序,深度优先遍历和广度优先遍历有连通和不连通两种,对于无向图来说,若是连通图,则一次遍历能够访问到图中所有的顶点,若无向图是非连通图,则只能访问到初始点所在连通分量中的所有顶点,其它连通分量是不可能访问到的,为此需要从其它每个连通分量中选择初始点,分别进行遍历,这样才能够访问到1图中的所有顶点,对于有向图来说,若从初始点到图中的每个顶点都有路径,则能够访问到图中的所有顶点,否则不能访问到所有顶点,为此需要再选择初始点,继续进行遍历,知道图中的所有顶点都被访问完为止。

2024-06-01 20:06:44 192

原创 邻接矩阵深度优先算法数据结构c语言

这里带2的是从节点到节点的路径输出,不带二的是所有顶点的输出,如果想找到所有顶点的DFS遍历路径,那么FindAllPath函数的实现是合适的。但是,如果想找到特定两个顶点之间的所有路径,那么需要稍微修改这些函数,带二2的函数就是为了解决这个问题,但他只能实现一条路径,没办法实现输出两点之间的所有路径,这条路径是有一定顺序的。

2024-06-01 17:42:17 152

原创 邻接表的存储方法数据结构c语言

create要输入两次边(对于无向图),create2只用输入一次边(create2的写法容易乱序,不建议用,写在这是因为有人问我为什么create不用像邻接表edgs[i][j]=edgs[j][i]=1那样写两个边节点出来),这里用的是头插法。代码中的print既不是广度优先遍历也不是深度优先遍历,只是为了看出来这个邻接表没创建错,复合要求。下面是分别使用create和create2的运行结果。

2024-06-01 15:42:50 176

原创 图邻接矩阵存储法数据结构c语言

下面是运行结果,这里展示的是无向图,也可以输入一个有向图,把原代码改动一两处就可以了。图这一部分是数据结构最难的部分,下面是代码。

2024-06-01 13:57:03 202

原创 线索二叉树(带头节点)数据结构c语言

为了便于遍历线索二叉树,我们为其添加一个头结点,头结点左孩子指向原二叉树的根结点,右孩子指针指向中序遍历的最后一个结点。同时,将第一个结点左孩子指针指向头结点,最后一个结点的右孩子指针指向头结点。

2024-05-31 17:20:37 130

原创 线索二叉树(无头节点)数据结构c语言

【代码】线索二叉树(无头节点)数据结构c语言。

2024-05-31 15:57:45 91

原创 二叉树的层次遍历数据结构c语言

【代码】二叉树的层次遍历数据结构c语言。

2024-05-30 20:33:46 103

原创 二叉树的创建及遍历数据结构c语言

【代码】二叉树的创建及遍历。

2024-05-30 19:44:39 133

原创 八皇后问题递归算法数据结构c语言

在我的代码中,数组的索引,值分别代表了行号,列号,分析每一步是否可走的时候,不需要判断行号是不是一样,利用值==col,判断列是否相等,两个对角线只要放数轴上仔细分析就可以知道,两个对角线斜率分别是1,-1,斜率为1时该线上所有点都会有col+row等于一个定值(因为这个斜率x加1,y就减1,总数总不变),斜率为-1,时该线上所有点都会有col-row为一个定值(因为该线上x加一时,y也加1,相减不变),也可以是row-col,只要=条件两边对应的行,边循序没写错就行,下面是运行结果,共92中不同的可能。

2024-05-30 15:13:37 159

原创 求123全排序递归算法数据结构c语言

我还补了一张n==5的时候的,120个;个数可以用高中学的全排序公式验证一下。

2024-05-30 13:11:54 175

原创 递归算法Hanoil问题数据结构c语言

下面是运行结果,录了个视频,对比下,这个结果是对的。代码少,只有20行,但难看懂。

2024-05-29 21:15:26 98

原创 KMP算法改进版数据结构c语言

就是说通过next后原来的值可能当前值一样,改进后的算法作了一点小改动,使上面的next数组会变为-1,0,0,0,0,如果模式串有大量重复字符,可以提高效率。KMP改进后的算法基本没变,就是考虑到aaaaa这样的next为-1,0,1,2,3,4.

2024-05-29 20:39:20 94

原创 KMP算法数据结构c语言

KMP算法是一种用于在文本串种搜索一个词(也称为模式串)的高效算法,KMP算法的关键在于当发现不匹配时,它知道部分已经匹配的字符的信息,并利用这些信息来避免不必要的字符比较。在KMP算法中,next数组扮演了重要的角色,next数组的主要目的是在发生不匹配时,告诉我们模式串应该从哪里开始重新进行匹配,

2024-05-29 19:14:43 132

原创 串的朴素算法(BF)数据结构c语言

我写的不太严谨,见谅。

2024-05-29 15:33:43 187

原创 循环队列数据结构c语言

老师都会讲那几个式子的,记住那几个条件就可以了。

2024-05-29 09:53:39 99

原创 逆波兰表达式(后缀表达式)求值——栈的运用数据结构c语言

这里的后缀表达式也可以写成12#2#4#+*6#-8#2#/+,我个人觉得没什么差别,我为了好看printf就只打印一位小数点。

2024-05-29 09:09:31 225

原创 栈的弹入,弹出序列数据结构c语言

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。下面给出两种解答方法。

2024-05-28 16:48:05 187

原创 中缀表达式转逆波兰表达式(后缀表达式)数据结构c语言

逆波兰表达式优势在于只需简单操作,入栈和出栈就可以搞定任何普通表达式的运算。对于当前这个运算符号都是入栈操作,因为此时还没拿到关于它的第二个操作数,所以是不断的对栈顶进行操作,下面是运行结果。

2024-05-28 15:00:53 90

原创 栈数据结构c语言

【代码】栈数据结构c语言。

2024-05-27 21:18:56 174

原创 循环链表数据结构C语言

循环链表没什么不同的,只不过在头节点上动了一下。

2024-05-27 19:42:18 110

原创 双链表数据结构c语言

【代码】双链表数据结构c语言。

2024-05-27 12:56:07 178

原创 链表数据结构c语言

主要是为了帮助初学者,如果有不对的地方,还请大佬指出。此处是运行结果,我为了展示两种创建法就写了两个链表,因为链表信息是字符类型的,所以中间不要加回车(回车符是“/r”,表示当行这一特定部分已经结束);你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它

2024-05-27 09:51:41 1068

空空如也

空空如也

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

TA关注的人

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