数据结构
文章平均质量分 59
by_木木夕
加油加油加油!!!
展开
-
java实现马踏棋盘问题
马踏棋盘问题:将马随机放在国际象棋的8×8棋盘chese[0~7][0~7]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之。将棋盘长和宽定义为常量,方便测试时修改:private final int X=8;private final int Y原创 2014-12-22 21:20:12 · 2477 阅读 · 0 评论 -
无向网图的邻接矩阵存储结构
1、图的邻接矩阵存储结构是用两个数组表示,一个一维数组存储图中的顶点信息,一个二维数组存储图中边的信息。我们规定顶点与自身的边的权值为0,因此,二维矩阵中对角线上的值全为0.顶点i与顶点j之间有边,则二维数组中a[i][j]=weight,顶点i与顶点j之间没有边,则二维数组中a[i][j]=无穷大。用65535来表示无穷大#define INFINITY 65535定义一个图的结构体原创 2014-12-25 21:21:47 · 2530 阅读 · 1 评论 -
无向网图的最小生成树算法--克鲁斯卡尔算法
与普里姆算法不同的是,克鲁斯卡尔算法是从边的角度出发构造最小生成树的,将所有的边按照权值从小到大进行排序,然后依次加入最小生成树,但是加入时需要判断有没有构成环路,如果构成环路了就放弃这条边,接着考虑下一条边。定义一个边的结构体:typedef struct{ int begin; int end; int weight;}Edge;MGraph是定义的图的结原创 2014-12-26 09:06:47 · 1761 阅读 · 0 评论 -
无向网图的最小生成树--普里姆算法
普里姆算法是从顶点的角度考虑来构造最小生成树。假定u0为初始顶点,将其加入到生成树的顶点集合U中 ,从u0出发,选择与它关联的具有最小权值的边(u0, v),将顶点v加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u, v),把该边加入到生成树的边集TE中,把它的顶点加入到集合U中。如此重复执行,直到网络中的所有顶点都加入到生成树顶点集合原创 2014-12-25 22:13:56 · 2414 阅读 · 0 评论 -
基于邻接矩阵存储的无向网图的创建,最小生成树算法实现完整代码
之前的几篇是分开按照创建及不同的算法写的,有点乱,也没有main函数,现在附上完整代码:#include #define MAXVEX 100#define INFINITY 65535typedef char VertexType;typedef int EdgeType;typedef struct { VertexType vexs[MAXV原创 2014-12-26 09:19:57 · 2561 阅读 · 0 评论 -
无向网图的邻接表存储结构
在邻接矩阵的存储结构中,当边比较少的时候,这种结构很浪费存储空间,因此我们考虑用链表来代替二维矩阵存储边的信息,顶点信息还是用一维数组表示。此时,我们的顶点信息不只是自己的名称等,还要指向自己的第一个边。边表结点包括三个部分,邻接点域存放下标,权值域,存放指向改点的边的权值,链域,指向下一个结点。typedef char VertexType;typedef int EdgeTyp原创 2014-12-25 22:10:49 · 5165 阅读 · 0 评论 -
无向网图的最短路径--Dijkstra算法
Dijkstra算法 是一个按长度递增的次序产生最短路径的算法。 假如我们从v0开始求最短路径,首先找到v0到v1的最短路径,当求v0到v2的最短路径时,要比较v0直接到v2的路径权值和v0通过v1到v2的权值,选择较小者为v0到v2的路径,依次类推,从而求得到最后一个点的最短路径//shortPath[] //保存最短路径 //parent[] //保存前驱结点原创 2015-01-04 10:33:47 · 857 阅读 · 0 评论 -
无向网图的最短路径--Floyd算法
Floyd算法是求任意顶点A到任意顶点B的最短路径,对于任意的顶点A和B,最短路径可能直接到达,也可能经过其他的顶点到达,通过比较权值w[A][X]+w[x][B]和w[A][B],较小者即为最短路径。因此对于任意的顶点A,B,对所有的点进行循环,找出最短路径//PathMatrix[v][w] 保存任意顶点v到w的带权长度 //ShortPathTable[][] 保存路径 p原创 2015-01-04 10:43:59 · 1818 阅读 · 0 评论 -
无向网图的最小生成树---完整代码
前两篇只有算法部分,现在附上完整代码public class ShortPath { public static void main(String[] args) { MGraph mg=new MGraph(); mg.addVertex('A'); mg.addVertex('B'); mg.addVertex('C'); mg.addVert原创 2015-01-04 10:47:34 · 912 阅读 · 0 评论