geodoer
一条热爱技术并且上进的咸鱼。
展开
-
[编程] 总结 - 数据结构与算法、GIS算法、C语言
bitmap算法 约瑟夫环原创 2019-12-24 21:28:17 · 2073 阅读 · 2 评论 -
[串] 字符串模式匹配算法汇总-KMP BM Sundy AC
字符串模式匹配,暴力、KML、BM、Sundy、AC简介与实现翻译 2017-09-25 19:16:22 · 835 阅读 · 0 评论 -
[图] 关节点 与 重(双)连通图
这是一个不正经与简单明了的笔记关节点什么是关节点【关节点】删除顶点V 与 =>图不再是连通图了 => 顶点V就叫关节点V上的所有边【连通图】图中的任意两点,都有路可以连通 例子: 1. 将 顶点a 与 a的所有边删除 => 图被分成两个部分(连通分量) =&a原创 2018-08-10 09:23:59 · 2702 阅读 · 1 评论 -
[图] Floyd算法|佛洛依德 - 任意两点的最短路径 - C语言实现
迪杰斯特拉(Dijkstra)算法是最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心一层一层的向外走(广度优先搜索),直到找到终点数据结构图G起点s集合S,U S:已求最短路径的顶点 和 相应的最短路径长度U:还未求出最短路径的顶点 和 该顶点到起点s的距离 注:如果还需要记录最短路径,集合S还得记录该路径经过的点操作步骤...原创 2019-10-15 16:34:16 · 11546 阅读 · 2 评论 -
[图] 拓扑排序 拓扑有序序列-有向图是否有回路-AOV网络
背景用【有向图】表示一个【工程的施工图】或【程序的数据流图】,则图中不允许出现回路例子: 【回路】 打地基->做房子结构->砌墙->装修->打地基 【解释】 “做房子结构“的前提是“打地基”,“砌墙”的前提是“做房子结构”,“装修”的前提是“砌墙”,“打地基”的前提是“装翻译 2018-08-12 10:39:08 · 20874 阅读 · 2 评论 -
[图] AOE网-关键路径|关键活动-原理、手算举例、C语言实现
关键路径问题用【有向网】表示一个【施工流图】 1. 【弧上的权值】:表示完成该项目【子工程】所需时间 2. 整个工程【完成的时间】:从【有向图】的【源点】到【汇点】的最长路径【问】 哪些子工程项是“关键工程” 【解释】 关键工程:这个工作如果推迟完成,它会导致整个工程完成推迟 【定性来谈】该弧上的权值增加,将使有向图上的【最长路径的长度】增加,这个【弧】称之为【关键活动】或...原创 2018-08-12 16:22:34 · 18382 阅读 · 2 评论 -
[图] 求一条从顶点i到顶点s的简单路径-DFS应用
问题求一条【从顶点i到顶点s】的简单路径例子求一条【A->E】的简单路径 若DFS不好,会造成这种情况:【A】->B->C->B->【A】->…->【E】。会产生回路 有路径的路径不是简单路径。 【所以】退回到以前遍历过的顶点(B),要将B从路径中删原创 2018-08-13 10:22:55 · 5525 阅读 · 3 评论 -
[图] 最短路径-两顶点间-BFS应用
问题求两个顶点之间的一条【路径长度最短】的路径例子用BFS,怎么得到【路径】: 改变队列的结构,入队列的顶点新增一个【域】(记录上一个顶点) 【路径】即一直往上找 【例子中】找到5,往上找,5->4->1->3 【实现】出队列的时候,不把结点删除掉,还保持链表,改变Q.front的指向就好了将链队列的结点改为【双链】结点,即结点中包含【next和...原创 2018-08-13 10:47:09 · 1274 阅读 · 1 评论 -
[图] 最小生成树-普利姆算法Prim O(n^2)稠密图-C语言实现-gif图演示
问题要在【n个城市】之间建立【通讯联络网】,则连通n个城市只需要修建n-1条线路【问题】如何在最节省经费的前提下建立这个通讯网?【问题等价于】构造【图】的一棵【最小生成树】,即:在e条带权的边中选取n-1条(不构成回路),使“权值之和”为最小举例在这几个城市中修建【通讯联络网】,问最省钱的修建方案我们能很容易得出如下图的修建方式:(红色线相连)接下来谈,如何...原创 2018-08-14 09:02:54 · 2702 阅读 · 1 评论 -
[图] 最小生成树-克鲁斯卡尔算法Kruskal O(eloge)稀疏图-C语言实现-gif图演示
克鲁斯卡尔算法Kruskal思想为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。性能O(eloge),适合稀疏图(边少的图) 另一个,普利姆Prim O(n^2):适合稠密图(边多的图) 博客:https://blog.csdn.net/summer_dew/article/details/81660483举例初始:将所有的顶点纳入考虑...原创 2018-08-14 09:21:22 · 3068 阅读 · 0 评论 -
[图] 无向图的连通分量和生成树-DFS
DFS生成森林生成【非连通图】的【深度优先生成森林】【存储方式】孩子兄弟链表// 建立无向图G的深度优先生成森林的 (最左)孩子(右)兄弟链表Tvoid DFSForest(Graph G, CSTree &T) { T = NULL; for (v=0; v<G.vexnum; ++v) { visited[v] = FALSE;...原创 2018-08-14 10:58:28 · 3948 阅读 · 3 评论 -
[图] 有向图的强连通分量-原理
问题求【有向图】的【强连通分量】【强连通分量】非强连通图有向图 的 极大强连通子图算法使用【DFS】步骤一思路有向图G上,从某个顶点出发沿以【该顶点】为【尾的弧】进行DFS并按其【所有邻接点】的【搜索都完成(即退出DFS函数)】的顺序将顶点排列起来实现对DFS做以下修改在进入DFSTraverse时首先进行计算变量的初始化,即【在入口...原创 2018-08-14 14:44:51 · 9072 阅读 · 0 评论 -
[栈] 顺序栈SqStack-C实现
C语言实现顺序栈,并进行了封装,可保存命名为’SqStack.h’,即可调用// Desc:顺序栈// Time:20180819// Vesion:0.0.1#ifndef BASE#define BASE#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#defin...原创 2018-08-25 15:14:58 · 3967 阅读 · 0 评论 -
[栈] 表达式求值 - C语言(多位数求值,2位数以上)
【理论】https://blog.csdn.net/summer_dew/article/details/82048387 【代码说明】支持:2位以上的数字,四则运算和幂运算 使用的栈,是自己实现,封装在2 SqStack.h文件中的,可自己实现,也可以参照:https://blog.csdn.net/summer_dew/article/details/82051767 【结果】 测试:...原创 2018-08-25 15:56:50 · 18274 阅读 · 4 评论 -
[递归] 总结 递归-分治法-递推-递归树
递归与分治法的区别递归分治法思路区别递归总结什么情况下用怎么写特点递归树举例递归怎么分析好不好递归树锐化为单支树递归树中含有很多相同的结点递归与递推递归与分治法的区别递归从上往下的分析,然后回溯:从n的情况一直往下走->走到1(特殊情况)->然后往回计算-&原创 2018-08-26 10:41:23 · 3773 阅读 · 0 评论 -
[C++] 十六进制转八进制
进制转换 字符 循环 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 ...原创 2018-08-26 15:54:08 · 7839 阅读 · 0 评论 -
[C++] 十六进制转十进制
进制转换 字符处理 判断问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入 FFFF样例输出 65535#include <stdio.h> #include <string.h> #include &l...原创 2018-08-26 15:56:00 · 18470 阅读 · 3 评论 -
[C++] 十进制转十六进制
循环 整除 求余 判断问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十...原创 2018-08-26 15:57:43 · 12888 阅读 · 0 评论 -
[递推|递归] Sine之舞(划分子问题)
问题问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+…sin(n))…) Sn=(…(A1+n)A2+n-1)A3+…+2)An+1 FJ想让奶牛们计算Sn的值,请你帮...原创 2018-08-26 17:24:36 · 320 阅读 · 0 评论 -
[串] 字符串匹配——KMP(复盘型笔记)
串(String):是由零个或多个字符组成的有限序列,又叫字符串空串:没有字符,”“子串、主串:子串即主串的子集比较:第一个不同字符的大小字符串匹配: 名称 思路 评价 BF 暴力:遍历两个串,相等位移,直到完全一样 O(M*N) KMP算法 避免不必要的回溯。子串的next数组 O(m+n)KMP思考...原创 2018-08-29 15:44:37 · 370 阅读 · 0 评论 -
[查找] 哈希表 | 散列表 - 例子:线性探查法、链地址法
【哈希表 | 散列表】根据关键字的值来计算出关键字在表中的地址 address = H(key) 【哈希函数|散列函数】函数H(key)举例构造查找查找成功的分析查找失败的分析构造哈希函数哈希函数冲突处理方法开放地址法链地址法查找失败的次数装填因子举例构造【问题举例】 1. 关键字序列为{7, 4, 1, 14, 10...翻译 2018-09-11 19:23:21 · 3199 阅读 · 0 评论 -
[队列] 二项式系数值(杨辉三角)
将二项式(a + b)^ i展开,其系数构成杨辉三角形杨辉三角除第一行外,每一行的值是上一行相邻的两个数相加左右的边上都是 1 ,可以看做0 + 1(在最外层加上一个0)#include<queue>#include<iostream>using namespace std;void Yang(int n){ int count = n;...原创 2018-09-15 16:07:11 · 1909 阅读 · 0 评论 -
[二叉树] 二叉树遍历汇总 - 递归与非递归 - C
非递归方法:思路一:根据访问次序来入栈并输出思路二:模拟访问过程思路三:使用标识符mark来记录已经第几次访问该结点/*@Desc:二叉链表 无头结点@Vesrion:0.0.1@Time:20180922创建*/#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;stdlib.h&amp;amp;a原创 2018-09-28 20:40:35 · 299 阅读 · 0 评论 -
[树] 树的层次序列+每个结点的度 创建 孩子兄弟链表CSTree(严蔚敏《数据结构》6.68)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.68【题目】6.68已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自左至右输入),试写出构造此树的孩子-兄弟链表的算法【思路】先创建结点为每个结点找爸爸【获得】类似于层次序列、按顺序存储的结构 转换成其他存储方式–&gt;都可以建立一个辅助的数组【答案】/*--------------------...原创 2018-10-04 12:55:50 · 6526 阅读 · 6 评论 -
[二叉树] △ 根据 广义表GList 创建 二叉树BiTree(严蔚敏《数据结构》6.70)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.70【题目】6.70如果用大写字母标识二叉树结点,则一棵二叉树可以用符合下面语法图的字符序列表示。试写一个递归算法,由这种形式的字符序列,建立相应的二叉树的二叉链表存储结构【思路】递归定义使用递归函数【测试数据】A(B(#,D(#,#)),C(E(#,F(#,#)),#))【答案】// 6.70 由广义表形式的输入建立二叉链表S...原创 2018-10-04 15:12:22 · 629 阅读 · 0 评论 -
[树] 将树(孩子兄弟链表CSTree)打印成树状(严蔚敏《数据结构》6.71)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.71【题目】6.71假设树上每个结点所含的数据元素为一个字母,并且以孩子-兄弟链表为树的存储结构,试写一个按凹入表方式打印一棵树的算法。例如:左下所示树印为右下形状。【思路】观察题目输出的序列ABEFCGD此为树的先根遍历–&gt;对应为二叉树存储的先序遍历前面的空格是该结点所在的层数【答案】/*-------------...原创 2018-10-04 15:38:36 · 2711 阅读 · 0 评论 -
[树] 将树(孩子链表CTree)打印成树状(凹入表形式)(严蔚敏《数据结构》6.72)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.72【题目】6.72假设树上每个结点所含的数据元素为一个字母,并且以孩子链表为树的存储结构,试写一个按凹入表方式打印一棵树的算法。例如:左下所示树印为右下形状。【思路】观察题目输出的序列ABEFCGD此为树的先根遍历–&gt;对应为二叉树存储的先序遍历前面的空格是该结点所在的层数【答案】/*----------------...原创 2018-10-04 16:14:33 · 6105 阅读 · 2 评论 -
[二叉树] 按树形状打印二叉树(严蔚敏《数据结构》6.69)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.69【题目】6.69假设以二叉链表存储的二叉树中,每个结点所含数据元素均为单字母,试编写算法,按树形状打印二叉树的算法。例如:左下二叉树印为右下形状。【思路】观察例子–&gt;打印的顺序为:CFEADB顺序肯定与递归顺序有关–&gt;写出三种递归序列- 先序:ABDCEF- 中序:FCEADB–&gt;逆序即是打印的顺序前面...原创 2018-10-04 16:22:33 · 6789 阅读 · 3 评论 -
[树] 二元组创建树(孩子兄弟链表)(严蔚敏《数据结构》6.67)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.67【题目】6.67假设以二元组(F,C)的形式输入一棵树的诸边(其中F表示双亲结点的标识,C表示孩子结点标识),且在输入的二元组序列C中,C是按层次顺序出现的。F='^'时C为根结点标识,若C也为‘^’,则表示输入结束。例如,如下所示树的输入序列为:试编写算法,由输入的二元组序列建立该树的孩子-兄弟链表。【答案】/*-------...原创 2018-10-04 16:25:58 · 4459 阅读 · 0 评论 -
[树] 双亲表示法PTree 转 孩子兄弟表达式CSTree(严蔚敏《数据结构》6.66)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.66【题目】6.66假设有n个结点的树T采用了双亲表示法,写出由此建立树的孩子-兄弟链表的算法。【答案】/*--------------------------------- |6.66 双亲表示法--&gt;孩子兄弟表达式| ---------------------------------*/#define MAX_TREE_...原创 2018-10-04 16:28:12 · 1936 阅读 · 0 评论 -
[二叉树] △ 已知前序序列、中序序列 创建 二叉树(二叉链表)(严蔚敏《数据结构》6.65)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.65【题目】6.65已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。【答案】// 6.65 前序序列、中序序列--&amp;gt;二叉链表BiTNode* PreInOrderToBiTree(char *prestr, char *instr, int prestart, int preend, ...原创 2018-10-04 16:31:33 · 2551 阅读 · 0 评论 -
[树] △ 由广义表GList创建树(孩子兄弟链表CSTree)(严蔚敏《数据结构》6.73)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.73【题目】6.73若用大写字母标识树的结点,则可用带标号的广义表形式表示一棵树,其语法图如下所示:例如,6.71题中的树可用下列形式的广义表表示:A(B(E,F),C(G),D)试写一递归算法,由这种广义表表示的字符序列构造树的孩子-兄弟链表(提示:按照森林和树相互递归的定义写两个互相递归调用的算法,语法图中一对圆括号内的部分可看成...原创 2018-10-05 11:55:21 · 1784 阅读 · 2 评论 -
[树] 以广义表的形式输出树(孩子兄弟链表CSTree)(严蔚敏《数据结构》6.74)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.74【题目】6.74试写一递归算法,以6.73题给定的树的广义表表示法的字符序列形式输出以孩子-兄弟链表表示的树【答案】/*----------------------------------------- |6.74 以广义表的形式输出 | ----------------------------...原创 2018-10-05 12:02:50 · 3126 阅读 · 0 评论 -
[树] △ 由广义表构造树(孩子链表CTree)并以广义表的形式输出(严蔚敏《数据结构》6.75|6.76 )
题目来源:严蔚敏《数据结构》C语言版本习题册 6.75、6.76【题目】6.75试写以递归算法,由6.73题定义的广义表表示法的字符序列,构造树的孩子链表。【题目】6.76试写以递归算法,以6.73题给定的树的广义表表示法的字符序列形式输出以孩子链表表示的树。【测试数据】A(B(E,F),C(G),D)【答案】/*------------------------- |6.75...原创 2018-10-05 15:17:35 · 1470 阅读 · 0 评论 -
[树] 计算树(双亲表示法)的深度(严蔚敏《数据结构》6.64)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.64【题目】6.64对以双亲表表示的树编写计算树的深度的算法【答案】/*---------------- |6.64 求树的深度| ----------------*/int TreeDepth(PTree T) { int i,j; int dep; int maxdep = 0; for (i=0; i<T.n;...原创 2018-10-05 15:36:11 · 4014 阅读 · 0 评论 -
[树] 求树(孩子链表)的深度 与其他基本操作(严蔚敏《数据结构》6.63)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.63【题目】对以孩子链表表示的树编写计算树的深度的算法【答案】/*------------------------- |6.63 求树的深度 | -------------------------*/int SubTreeDepth(CTree T, int index) { //序号为index的子树深度 int...原创 2018-10-05 15:47:15 · 1668 阅读 · 0 评论 -
[树] 树的基本操作(孩子兄弟结点CSTree | 二叉树存储) -- 叶子结点个数|树的度|树的深度|打印树的边(严蔚敏《数据结构》6.59-6.62)
题目来源:严蔚敏《数据结构》C语言版本习题册 6.59-6.62【题目】6.59 编写算法完成下列操作:无重复地输出以孩子-兄弟链表存储的树T中所有的边。输出的形式为(k1, k2), …, (ki, kj), …,其中,ki和kj为树结点中的结点标识。【题目】6.60 试编写算法,对一棵以孩子-兄弟链表表示的树统计叶子的个数。【题目】6.61 试编写算法,求一棵以孩子-兄弟链表表示的树...原创 2018-10-05 15:51:20 · 2071 阅读 · 0 评论 -
[图] 图的遍历-DFS|BFS-递归与非递归-邻接表示例-C语言
邻接表// DFSint visit[MAX_VERTEX_NUM];void DFSUtil_AL(ALGraph G, int v) { ArcNode *p; visit[v]=1; Visit(G.vers[v].data); for (p=G.vers[v].firstarc; p; p=p->next) if (!visit[p->adjV]) DF...原创 2018-10-10 17:06:02 · 1118 阅读 · 2 评论 -
[图] 找两顶点之间的路径长度为k的简单路径-邻接表-有向图(严蔚敏《数据结构》7.27扩展)
题目来源:严蔚敏《数据结构》C语言版本习题册 7.27【题目】7.27采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法(一条路径为简单路径指的是其顶点序列中不含有重现的顶点)。【测试数据】123456对应ABCDEF【结果】【答案】/*-----------------------------------------------...原创 2018-10-10 17:59:26 · 4097 阅读 · 0 评论 -
[图] 找出u到v的所有路径-邻接表(有向图)-DFS(严蔚敏《数据结构》7.28)
题目来源:严蔚敏《数据结构》C语言版本习题册 7.28【题目】已知有向图和图中两个顶点u和v,试编写算法求有向图中从u到v的所有简单路径,并以下图为例手工执行你的算法,画出相应的搜索过程图【测试数据】【结果】【答案】/*---------------------------------------------------------------- |7.28 有向图-从u-v的...原创 2018-10-11 10:50:49 · 4476 阅读 · 0 评论