实验八 图的最小生成树
| November 13, 2008 21:34 | timmy | Via Original
Graph1.h
void InitMatrix(adjmatrix G)
{
int i,j;
for(i=0;i<MaxVertexNum;i++)
for(j=0;j<MaxVertexNum;j++)
if(i==j)
G[i][j]=0;
else
G[i][j]=MaxValue;
}
void CreateMatrix(adjmatrix G,int n)
{
char *s=new char[100];
cerr<<"please input the matrix: ";
cin>>s;
istrstream sin(s);
char c1,c2,c3;
int i,j;
WeightType w;
sin>>c1;
do{
sin>>c1>>i>>c2>>j>>c3>>w;
if(i*j<0||i>n-1||j>n-1)
exit(1);
G[i][j]=G[j][i]=w;
sin>>c1;
if(c1=='}')
break;
}while(1);
}
void PrintMatrix(adjmatrix G,int n)
{
int i,j;
cout<<"V={";
for(i=0;i<n-1;i++)
cout<<i<<',';
cout<<n-1<<')'<<endl;
cout<<"E={";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(G[i][j]!=0&&G[i][j]!=MaxValue)
if(i<j)
cout<<'('<<i<<','<<j<<')'<<G[i][j]<<',';
cout<<'}'<<endl;
}
void InitArray(edgeset GE)
{
for(int i=0;i<MaxEdgeNum;i++){
GE[i].fromvex=GE[i].endvex=-1;
GE[i].weight=MaxValue;
}
}
void InitMatrix(adjmatrix G)
{
int i,j;
for(i=0;i<MaxVertexNum;i++)
for(j=0;j<MaxVertexNum;j++)
if(i==j)
G[i][j]=0;
else
G[i][j]=MaxValue;
}
void CreateMatrix(adjmatrix G,int n)
{
char *s=new char[100];
cerr<<"please input the matrix: ";
cin>>s;
istrstream sin(s);
char c1,c2,c3;
int i,j;
WeightType w;
sin>>c1;
do{
sin>>c1>>i>>c2>>j>>c3>>w;
if(i*j<0||i>n-1||j>n-1)
exit(1);
G[i][j]=G[j][i]=w;
sin>>c1;
if(c1=='}')
break;
}while(1);
}
void PrintMatrix(adjmatrix G,int n)
{
int i,j;
cout<<"V={";
for(i=0;i<n-1;i++)
cout<<i<<',';
cout<<n-1<<')'<<endl;
cout<<"E={";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(G[i][j]!=0&&G[i][j]!=MaxValue)
if(i<j)
cout<<'('<<i<<','<<j<<')'<<G[i][j]<<',';
cout<<'}'<<endl;
}
void InitArray(edgeset GE)
{
for(int i=0;i<MaxEdgeNum;i++){
GE[i].fromvex=GE[i].endvex=-1;
GE[i].weight=MaxValue;
}
}











