Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var v = int.MaxValue;

            Console.WriteLine("计算溢出,造成负数");
            Console.WriteLine("var v = int.MaxValue;");
            Console.WriteLine($"v+1:{v+1}");

            DirecNetAdjMatrix <string> adjMatrix = new DirecNetAdjMatrix <string>(new string[] { "A", "B", "C", "D", "E", "F" });

            adjMatrix.SetEdge("A", "C", 5);
            adjMatrix.SetEdge("A", "D", 30);
            adjMatrix.SetEdge("B", "A", 2);
            adjMatrix.SetEdge("B", "E", 8);
            adjMatrix.SetEdge("C", "B", 15);
            adjMatrix.SetEdge("C", "F", 7);
            adjMatrix.SetEdge("E", "D", 4);
            adjMatrix.SetEdge("F", "D", 10);
            adjMatrix.SetEdge("F", "E", 18);

            PrintDirecNetAdjMatrix(adjMatrix);

            bool[,] pathMatricArr = new bool[adjMatrix.GetNumOfVertex(), adjMatrix.GetNumOfVertex()];
            int[] shortPathArr = new int[adjMatrix.GetNumOfVertex()];

            adjMatrix.Dijkstra(ref pathMatricArr, ref shortPathArr, new Node <string>("A"));

            Console.WriteLine();
            Console.WriteLine("最短路径长度:");
            PrintArray(shortPathArr);
            Console.WriteLine();
            Console.WriteLine("路线:");
            PrintArray(pathMatricArr, shortPathArr.Length);
        }
Ejemplo n.º 2
0
        static void PrintDirecNetAdjMatrix <T>(DirecNetAdjMatrix <T> adjMatrix)
        {
            Console.WriteLine("图顶点数组:");
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < adjMatrix.GetNumOfVertex(); i++)
            {
                sb.AppendFormat("  {0}  ", adjMatrix[i].Data);
            }
            Console.WriteLine(sb.ToString());

            Console.WriteLine();
            Console.WriteLine("图权值邻接表矩阵:");

            for (int i = 0; i < adjMatrix.GetNumOfVertex(); i++)
            {
                sb = new StringBuilder();
                for (int j = 0; j < adjMatrix.GetNumOfVertex(); j++)
                {
                    sb.AppendFormat("  {0}  ", adjMatrix[i, j].ToString().PadLeft(6, ' ').PadRight(10, ' '));
                }
                Console.WriteLine(sb.ToString());
            }
        }