namespace MatrixGraph { public class Program { static void Main(string[] args) { MatrixGraphManager manager = new MatrixGraphManager();
//创建图 MatrixGraph graph = manager.CreateMatrixGraph();
manager.OutMatrix(graph);
int sum = 0;
manager.Prim(graph, out sum);
Console.WriteLine("n最小生成树的权值为:" + sum);
manager.Dijkstra(graph);
//Console.Write("广度递归:t");
//manager.BFSTraverse(graph);
//Console.Write("n深度递归:t");
//manager.DFSTraverse(graph);
Console.ReadLine();
} }
#region 邻接矩阵的结构图 /// <summary> /// 邻接矩阵的结构图 /// </summary> public class MatrixGraph { //保存顶点信息 public string[] vertex;
//保存边信息 public int[,] edges;
//深搜和广搜的遍历标志 public bool[] isTrav;
//顶点数量 public int vertexNum;
//边数量 public int edgeNum;
//图类型 public int graphType;
/// <summary> /// 存储容量的初始化 /// </summary> /// <param></param> /// <param></param> /// <param></param> public MatrixGraph(int vertexNum, int edgeNum, int graphType) { this.vertexNum = vertexNum; this.edgeNum = edgeNum; this.graphType = graphType;
vertex = new string[vertexNum]; edges = new int[vertexNum, vertexNum]; isTrav = new bool[vertexNum]; }
} #endregion
/// <summary> /// 图的操作类 /// </summary> public class MatrixGraphManager { #region 图的创建 /// <summary> /// 图的创建 /// </summary> /// <param></param> public MatrixGraph CreateMatrixGraph() { Console.WriteLine("请输入创建图的顶点个数,边个数,是否为无向图(0,1来表示),已逗号隔开。");
var initData = Console.ReadLine().Split(',').Select(i => int.Parse(i)).ToList();
MatrixGraph graph = new MatrixGraph(initData[0], initData[1], initData[2]);
//我们默认“正无穷大为没有边” for (int i = 0; i < graph.vertexNum; i++) { for (int j = 0; j < graph.vertexNum; j++) { graph.edges[i, j] = short.MaxValue; } }
Console.WriteLine("请输入各顶点信息:");
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|