数据结构
文章平均质量分 56
mynd天堂
myndtt.com
展开
-
基础简单的数据结构-C语言-动态链表
最近温习了数据结构,感觉还是记一下比较好 简单的动态链表构建。在此之前还是说一个malloc与calloc函数区别吧。 malloc函数原型就是: void * malloc(unsigned int size); 其功能就是在内存动态存储区分配长度为size的连续空间,返回的是分配域的起始位置,如何调用该函数没有成功,比如空间不足等原因,返回的是空指针 calloc函数原型就是原创 2017-05-01 01:07:35 · 2017 阅读 · 0 评论 -
基础简单的数据结构-C语言-二叉树链表构造
二叉树是树的一种,只因该树中规定结点至多有两个子结点,故称二叉树。对比与树,二叉树可以是一颗空树,而树必须要有一个根结点。 满二叉树:一颗树种所有的叶结点都在同一层,而其他非终结点(叶节点以外的结点)分度均为2 完全二叉树:去掉最后一层是一颗满二叉树,且最后一层的叶结点都靠左 下面给出二叉树的构建,这里的构建是照一颗二叉查找树的规则去构建,即左叶结点小于根结点,右结点不小于 根原创 2017-05-02 11:31:44 · 1100 阅读 · 0 评论 -
基础简单的数据结构-C语言-二叉查找树数组模拟
二叉查找树,它亦或是一颗空树,在或者是有以下性质的二叉树 1:某个结点左子树存在则该左孩子数值必小于该结点数值 2:某个结点右子树存在则该右孩子数值必不小于该结点数值 写代码之前,需要了解两个概念 一:后继结点 某个结点比如Q的后继结点也就是将Q所在的树进行中序排序后排序在Q后面的一个结点。 如果一个结点Q有右孩子,那么中序排序的时候,这个结点的右子树的最左节节点会出现Q后面,如果原创 2017-05-02 19:33:51 · 614 阅读 · 0 评论 -
基础简单的数据结构-栈-后序表达式
大家都知道平时我们看到的计算式都是中序的,然而实际上由于运算符的优先级原因,计算机一般将中序表达式转成前序或者后序表达式来更有效率的计算。而在次过程中,需要用到栈来更好的处理 这里写一下中序变后序表达式的转化过程: 拿A+B-C/(D+E)为例子吧 1:我们将该式子依次扫描,如果是数字则直接输出,遇见运算符号则压入栈。此时这里读到A,输出A 2:读到+,压入+ 3:读到B,输出B原创 2017-05-01 11:34:50 · 655 阅读 · 0 评论 -
图-最小生成树-kruskal算法
这个算法比较简单,对于这个网友已经写烂了,我现在写的不过是老生常谈的东西了。 还是简单记一下步骤 1:边排序 2:从小到大加入边,不要生成回路 #include #include #define MAXN 2000 using namespace std; int n,e;//点的个数,边的个数 struct k{ int x; int y; int w; }k_e[MAXN]; /原创 2017-05-02 21:17:45 · 384 阅读 · 0 评论 -
图-最小生成数-prims算法
算法步骤 1:从一个点比如为Q出发,找出它能到达其他顶点的所有边的最小值边,记录该点比如为W。 2:从上次记录的点W出发,重新执行1的操作,这时候的边要与上次对应的边值进行比较。 比如Q到P为4,而W到P为6,那么记录W到P仍然为4。 3:重复直至所有点被记录 --------------------------------------------------------原创 2017-05-03 09:26:15 · 886 阅读 · 0 评论 -
图-最短路径-Dijkstra算法
算法步骤: 1 :从要找的起点比如A出发,找出A距离其他点路径最短的那个点比如为B,标记访问。(A无法到达的点是为距离无限大) 2:通过B点,更新A通过B点到其他点的距离,找出这时到其它点(没有标记访问的)最短的距离,记录该点比如为C,标记访问。 3:通过C点,重复操作步骤2 代码(该代码用邻接矩阵来存图,当图很大的时候,这种方法效率低): #include using namespac原创 2017-05-03 10:42:25 · 675 阅读 · 0 评论 -
图-最短路径-Floyd算法
这个算法形式很简单。 如果去求每两个顶点之间的最短路径,我们用其中一个顶点作为源点,去看看通过其他一个点到其他点最短距离是多少,也就是重复执行Dijkstra算法n次,就可以求得每一对顶点的最短路径。时间复杂度高!!!就是形式简单。本质是动态规划,设D[I,J]为i到J最短路径,则其动态规划的状态转移方程为: D[I,J原创 2017-05-03 23:38:36 · 387 阅读 · 0 评论