你好~那天你帮我把一个C++程序改成了C#的~~我自己按照你说的改了~~麻烦你帮我看看对不对~~还有些地方我不会改~
const int MVNUM 100;
const int Maxint 32767;
using System.IO;
using System.IO;
bool XXX ;
Class MGraph
{
string[] vexs = new string[MVNUM];
int[] arcs = new int[MVNUM,MVNUM];
int[] D1 = new int[MVNUM];
int[] D = new int[MVNUM];
int[] p1 = new int[MVNUM];
}
void createMGaph(MGraph G,int n,int e)
{
int i,j,k=1,w;
for(i=1;i<=n;i++)
G.vexs=i.Tostring();
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
G.arcs[i,j]=Maxint;
Console.WriteLine(" 输入"+e"条边的顶点终点和权值(以空格隔开!)");
do
{
i=Convert.ToInt32(Console.ReadLine());j=Convert.ToInt32(Console.ReadLine());w=Convert.ToInt32(Console.ReadLine());
if(i>n||j>n)
Console.WriteLine("错误,重新输入\n");
else
{
G,arcs[i,j]=w;
k++;
}
}
while(k<=e);
Console.WriteLine("有向图的存储结构建立完毕!\n");
}
void dispmgraph(MGraph G,int n,int e)
int i,j;
for(i=1;i<=n;i++)
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(G.arcs[i,j]==Maxint)
{
Console.WriteLine(" "+"∞");
}
else
arcs[i][j];Console.WriteLine(" "+G.arcs[i,j].Tostring(););
}
}
void Floyd(MGraph *G,int n)
{
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(G.arcs[i,j]!==Maxint)
p[i][j]=j;
else
p[i][j]=0;
D[i][j]=G.arcs[i,j];
}
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(D[i][k]+D[k][j]<D[i][j])
{
D[i][j]=D[i][k]+D[k][j];
p[i][j]=k;
}
}
}
}
static void Main(string[] args)
{
MGraph G = new MGraph();
int n,e,v,w,k;
int m;
string x;
Console.WriteLine("请先建立一个有向图:\n");
Console.WriteLine("输入图中顶点数和边数 n,e(以空格隔开!):");
n=Convert.ToInt32(Console.ReadLine());e=Convert.ToInt32(Console.ReadLine());
createMGaph(G,n,e);
do
{
Console.WriteLine("1.求图确定两点间的最短路径!\n");
Console.WriteLine("2.退出!\n");
Console.WriteLine("请输入你的选择:");
m=Console.ReadLine();
switch(m)
{
case 1:
{
do
{
Console.WriteLine("输入您要查找的起点和终点(输入0,0结束):v,w:");
v=Convert.ToInt32(Console.ReadLine());w=Convert.ToInt32(Console.ReadLine());
Floyd(G,n);
k=p[v][w];
if(k==0)
Console.WriteLine("顶点%d到%d无路径!\n",v,w);
else
{
Console.WriteLine("从顶点%d到%d的最短路径为:%d",v,w,v);
while(k!=w)
{
Console.WriteLine("->%d",k);
k=p[k][w];
}
Console.WriteLine("->%d",w);
Console.WriteLine("路径长度:%d\n",D[v][w]);
}
}
while(v!=0&&w!=0);
break;
}
case 2: Console.WriteLine("求最短路径结束!");break;
}
}
while(m!=2);
}