数据结构
文章平均质量分 51
SmarterYu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
利用栈进行表达式求解
采用栈的思想,对输入的字符串表达式进行求解。#includedouble num[100];int nt=0;double oper[50];int ot=0;char opset[7]={'+','-','*','/','(',')','='};unsigned char prior[7][7] = { // 算符间的优先关系 '>','>','','>',原创 2013-03-23 23:14:06 · 1354 阅读 · 0 评论 -
AOV网拓扑排序算法
这个算法思想很简单,每次挑出入度为0的节点,放到栈中去,然后删掉以他为起点的边,当然相应的要更新与他相连的边的入度,也就是减1.需要说明的是,下面给出的算法使用的数据结构是关系矩阵,这里只是我偷懒,其实更好的选择应该是连接表,因为AOV一般点与点之间的关系并不是很多,也就是边的数量一般不是很多,所以链接矩阵相应的会更加节省空间吧~~~还有就是栈采用了一个隐式方法,不好细说,具体就看代码吧,原创 2012-11-05 00:24:22 · 1289 阅读 · 0 评论 -
每对顶点间的最短路径——Floyd算法
代码实现很简单,但是这个算法的思想是动态规划,所以个人感觉理解不是很好理解,反正我写了N多次还是时常犯嘀咕,晕头。代码:#include#includeusing namespace std;int graph[101][101];int path[101][101];int size;void floyd(){ for(int i=1;i<=size;i++) {原创 2012-11-13 00:58:34 · 702 阅读 · 0 评论 -
字符串模式匹配——KMP算法
字符串的模式匹配问题即为在一串字符A当中寻找到一个子串使得子串与另一个字符串完全相同,把子串起始的下标输出即可。对于这个问题,可以很直白的进行解决,也就是通常说的朴素的模式匹配,但是相对来说时间复杂度较高,为L(A)*L(B)。作为改进,KMP算法的时间复杂度只是线性的,所以更优。KMP算法的本身代码实现并不复杂,思想框架也不复杂,但是里面的利用失败函数寻找next值方法却不好理解个人觉得原创 2012-11-17 23:33:52 · 589 阅读 · 0 评论 -
最小生成树——Kruskal算法
这是求无向图的最小生成树的另一算法,主要思想是每次找到一条连接不同连通分量的最小边,然后合并他连接的的这两个连通分量,直至所有的节点构成了一个连通分量(不含通路)~算法不算难,但是也犯了些很二的错误,在下面写一下吧,当做 参考教训!参考代码:#include#include#include#includeusing namespace std;int graph[101][原创 2012-11-03 15:51:31 · 431 阅读 · 0 评论 -
字符串模式匹配——KMP算法
字符串的模式匹配问题即为在一串字符A当中寻找到一个子串使得子串与另一个字符串完全相同,把子串起始的下标输出即可。对于这个问题,可以很直白的进行解决,也就是通常说的朴素的模式匹配,但是相对来说时间复杂度较高,为L(A)*L(B)。作为改进,KMP算法的时间复杂度只是线性的,所以更优。KMP算法的本身代码实现并不复杂,思想框架也不复杂,但是里面的利用失败函数寻找next值方法却不好理解。它原创 2013-03-24 11:14:59 · 986 阅读 · 0 评论 -
最小生成树——prim算法
#include#include#includeusing namespace std;#define max 1000int graph[100][100];int visited[100];int num;//int min;struct closed{ int lowcost; int vex;}cs[100];struct edge{ int head原创 2012-11-01 11:58:54 · 575 阅读 · 0 评论 -
求AOE网的关键路径
问题描述以及算法的思想网上有许多,为了省事就不写了,给几个链接如果不太了解的可以参考一下。http://baike.baidu.com/view/288224.htmhttp://blog.163.com/zhoumhan_0351/blog/static/3995422720098236028304/这里需要说明一下,这一次我所采用的数据结构是邻接表了,本来想接着用矩阵的,但原创 2012-11-11 00:11:24 · 762 阅读 · 0 评论 -
广义表的实现
描述: 广义表是一种非线性的数据结构。但如果广义表的每个元素都是原子,它就变成了线性表。广义表广泛地用于人工智能等领域的LISP语言。 广义表一般记作 LS = (a1, a2, ···, an), n是它的长度,ai可以是单个元素(原子),也可以是广义表(子表),当广义表非空时,称第一个元素a1为LS的表头,称其余元素组成的表为LS的表尾。注意:表头是元素(原创 2013-03-26 11:22:59 · 1453 阅读 · 0 评论 -
正权最短路径——Dijkstra
图算法里面的基础算法,没什么好说的~代码:#include#include#includeusing namespace std;#define max 1000int graph[100][100];int visited[100];int dist[100];int path[100];int num;void fway(int n){ path[n]=原创 2012-10-30 12:27:41 · 585 阅读 · 0 评论
分享