![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
考研算法
考研算法总结分享
蔬菜不菜啊
这个作者很懒,什么都没留下…
展开
-
希尔排序(C语言实现)
希尔排序希尔排序又称“增量缩小排序”,它也是一种属插入排序类的方法。基本思想先将整个待排记录序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序希尔排序示例实现代码#include<stdio.h>void ShellInsert(int a[], int gap, int k, int n) //(数组a,增量gap,初始位置k,数组大小n){ //对当前数组做一次希尔插入排序。增量为gap int i, j原创 2020-12-05 11:10:50 · 1710 阅读 · 0 评论 -
键树(双链树)C语言实现
键树键树又称数字查找树。它是一棵度大于等于2的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。例如,若关键字是数值,则结点中只包含一个数位;若关键字是单词,则结点中只包含一个字母字符。这种树会给某种类型关键字的表的查找带来方便。举例假设有如下16个关键字的集合{CAI,CAO,LI,LAN,CHA,CHANG,WEN,CHAO,YUN,YANG,LONG,WANG,ZHAO,LIU,WU,CHEN}首先按照其首字符不同将它们分成5个子集:{CAI,CAO,CHA,C原创 2020-12-04 16:43:08 · 907 阅读 · 1 评论 -
图的遍历生成树(深度遍历和广度遍历)
基本思想深度优先遍历生成森林1)遍历无向图的各顶点,将其作为一个初始点,建立深度优先生成树2)在建树函数DFSTree()中,设置标识,将第一个结点设置为根节点的左孩子,其余结点作为左孩子的兄弟,具体见DFSTree()函数3)在生成森林函数DFSForest()中,如果仍然存在未访问节点,则说明是非连通图将该结点接入到根节点的兄弟结点上,继续深度优先建立生成树,具体见DFSForest()函数4)前序遍历生成树,用来检验结果广度优先遍历生成森林1)利用队列来存储树的结点2)循环遍历图的每原创 2020-12-01 16:39:14 · 10819 阅读 · 2 评论 -
C语言连通图的关节点——严蔚敏C语言《数据结构》
关节点倘若在删去顶点v以及v相关联的各边后,将图的一个连通分量分割成两个或两个以上的分量,则称顶点v为该图的一个关节点关节点的特性由深度优先生成树可得出两类关节点的特性:若生成树的根有两棵或两棵以上的子树,则此根顶点必为关节点若生成树中某个非叶子顶点v,其某棵子树的根和子树中的其他结点均没有指向v的祖先的回边,则v为关节点连通图及深度优先生成树相关参数visited[v]为深度优先搜索遍历连通图时访问顶点v的次序号low[v]可以理解为顶点v可以往回找到的最远祖先序号数据1原创 2020-11-30 17:23:56 · 2379 阅读 · 1 评论 -
迪杰斯特拉算法(邻接表求解)
[基本思想]与邻接矩阵表示的方法不同的是,在更新dis数组和path数组时,只需要把求u到j距离的g.edges[u][j]换成邻接表表示g.edges[u][j]表示u到j的距离,因此可以写一个getWeight(g, u, j)算法用于计算u到j的距离[核心函数]//获得边的权重float getWeight(AGraph *G, int u, int j){ ArcNode *p = G->adjlist[u].firstarc; while(p != NULL) {原创 2020-11-19 20:20:18 · 4027 阅读 · 2 评论 -
一元稀疏多项式计算器(C语言代码实现)
[基本功能]输入并建立多项式输出多项式两个多项式相加两个多项式相减两个多项式相乘计算多项式在x处的值求多项式a的导函数[完整代码]//一元稀疏多项式计算器#include<stdio.h>#include<stdlib.h>typedef struct LNode{ float coef; //系数 int exp; //指数 struct LNode *next;}LNode, Polynomial;//创建一个多项式void cr原创 2020-11-18 15:29:17 · 13522 阅读 · 14 评论 -
约瑟夫环(循环链表求解)
问题描述已知n个人(以编号1,2,3,..., n分别表示)围坐在一张圆桌周围,从编号为1的人开始报数,数到m的那个人出列;他的下一个人又原创 2020-11-17 19:48:34 · 298 阅读 · 0 评论 -
层次序列和中序序列建立二叉树
代码如下//层次序列、中序序列唯一确定一棵二叉树#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *rchild;}BTNode;//layer[]为层次序列,in[]为中序序列, inL为中序序列的左端,inR为中序序列的右端BTNode *cre原创 2020-11-15 15:03:13 · 3857 阅读 · 0 评论