自定义博客皮肤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)
  • 收藏
  • 关注

原创 拓扑排序 C语言实现---图论

算法思想计算每个节点的入度,每轮输出入度为零的节点,并且将已经输出的节点从图中删除。即,将该节点指向的节点入度减一;在实现上,维护一个入度数组,保存每个节点的入度,每一轮将入度为零的节点入栈(这里用队列也可以,只是作为存储入度为零的节点并且规定他们之间的输出顺序),并将他们指向的节点入度减一。代码实现以邻接矩阵存储图结构为例,代码如下(伪代码,栈或队列需要实现)#define MAX_VEXNUM 100typedef struct{ int vex[MAX_VEXNUM];

2021-11-01 18:32:25 291

原创 Floyd算法 C语言实现

算法思想维护一个当前最短举例矩阵lowcost,lowcost[i][j]表示当前从i到j的最短距离,初始为图的邻接矩阵,此后对该矩阵进行n(图中节点的个数)次迭代,第k次迭代的过程为,对lowcost[i][j]进行更新,考虑从节点i到节点j经过第k个节点,距离是否减小,若减小,则更新lowcost矩阵,具体为比较lowcost[i][k]+lowcost[k][j]与lowcost[i][j],并且用path[i][j]将路径保存代码#define MAX_VEXNUM 100typedef s

2021-10-29 17:52:03 441

原创 Dijkstra算法 C语言实现---数据结构图论算法

算法思想维护三个数组,一个visited数组,表示是否已经划入最短路径一个lowcost数组,表示从初始节点到达各个节点的最小代价一个path数组,用来存放最短路径,path[i]代表节点i的前驱节点,根据不断寻找前驱节点可以描述整个路径。思想类似于Prim算法,使用贪心的策略,每次从lowcost数组中选择最小值归入最短路径,并且根据已经并入的节点更新lowcost数组,具体细节可见代码。代码使用临界矩阵存储为例,代码如下#define MAX_VEXNUM 100typedef s

2021-10-25 22:00:35 582

原创 C语言实现Prim算法

C语言实现Prim算法话不多说,思想简单,直接上代码维护两个数组。一个lowcost数组,表示当前已经归入最小生成树的结点集合与未归入的集合节点之间的最小代价;一个visited数组,表示是否已经归入最小生成树每次从lowcost数组中找到未归入最小生成树但代价最小的节点,将之归入最小生成树,之后根据归入的新节点更新lowcost数组直到所有节点全部归入最小生成树,算法结束;下例用未压缩的邻接矩阵存储图话不多说,思想简单,直接上代码#define MAX_VEXNUM 100typedef

2021-10-24 21:29:45 4787 2

原创 动态规划法 最长公共子串 golang

思想创建数组array[i][j]代表text1中以text[i]为首字母的字符串与text2中以text2[j]为首字母的字符串匹配的最大长度得到递推公式array[i][j]=array[i+1][j+1] (text1[i]==text2[j])array[i][j]=0 (text1[i]!=text2[j])首先处理边界当字符串长度为1的时候,只有text1[i]==text2[j],array[i][j]=1,否则为0代码package mainimport "fmt"f

2021-03-19 14:46:44 319

原创 剑指 Offer 13. 机器人的运动范围 go语言

题目要求地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?提示1 <= n,m <= 1000 <= k <= 20go

2021-03-07 21:34:05 132

原创 添加右键菜单-在vscode中打开

第一种方法建立一个文本文件,写入如下的文本Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode]@="Open with Code""Icon"="C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe"[HKEY_CLASSES_ROOT\*\shell\VSCode\command]@="\"C:\\Program Files (x86)\\Micro

2020-09-27 00:02:04 638 1

原创 队列的数组及链表实现,C语言代码

数组实现基本思想用线性表实现队列如图所示:队尾指向最后一个数据元素的后一个位置,所以front==rear代表队列为空在队尾插入元素,在队头取元素,一般我们用这个结构实现循环队列,取元素时front=(front+1)%Size,插入元素使用rear=(rear+1)%Size,由于是循环队列,所以队列满的条件也变为了rear==ront为了解决这个问题,我们将队列中闲置一个元素,将rear...

2020-04-06 17:57:52 246

原创 栈的定义以及基本操作C语言实现--线性栈和链式栈

栈的定义以及基本操作C语言实现栈本身就是线性表,只不过是操作受限制,数据元素后进后出用顺序表表示栈栈的声明#define InitSize 5#define Elemtype int#define Status int#define OK 1//返回的操作结果,比如某个操作是否成功#definw OVERFLOW -1#define ERROR -1typedef stru...

2020-04-05 18:16:09 257

原创 栈的应用C语言实现(一),中缀表达式转后缀表达式

一、进制转换使用辗转相除法作进制转换,比如下面的十进制转二进制void Base_conversion(int num){//将num转化为二进制输出 int temp,e; Stack S; InitStack(&S); while(num){ temp=num%2; PushStack(&S,temp); ...

2020-04-01 21:47:27 863 2

原创 定点数的编码表示

定点数的编码表示最常见的有原码、反码、补码、移码四种编码方式原码常用来表示浮点数的尾数最高位是符号位,数值部分用真值的绝对值表示反码直接是原码的按位取反,在求补码的过程中会用到反码,纯粹是为了硬件容易实现补码用来表示定点整数补码的来源------模运算一个负数的补码等于模数减去该负数的绝对值,当X<0时,[X]=M-|X|=M+X,(这里的M表示模数,[X...

2020-03-24 21:46:10 3271

原创 线性链表的合并

一、将所有在Lb中,不在La中的数据元素插入到La中int LocateElem(List *head,int e){//查找在链表中有没有数据域是e的节点,有的话返回1,否则0 List *p=head->next; while(p){ if(p->data==e) return 1; } return 0;...

2020-03-20 16:53:56 1841 1

原创 关于fgetc,getc,getchar和scanf的一些小知识

在C语言中,一个char类型的字符可以用int型的数参照ASCII表来表示,比如char ch = 49;printf("%c", ch);这段代码会输出1,因为字符**‘1’**对应的ASCII就是49getchar的声明如下int getchar(void)即读入字符按照char类型处理,而返回值则是这个char类型的数据对应的int值,与scanf不同,scanf可以指定输入...

2020-03-06 11:07:43 954

空空如也

空空如也

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

TA关注的人

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