//有向连接矩阵
#include<iostream>
#include<iomanip> //与精度设置有关的头文件
#include<stdio.h>
using namespace std;
#define MAXVEX 100
#define INFINITY 65535
//邻接矩阵
typedef char Vertextype;//顶点类型
typedef int Edgetype;//边上的权值
typedef struct Mgraph{
Vertextype vexs[MAXVEX];//顶点表
Edgetype arc[MAXVEX][MAXVEX];//邻接矩阵
int numvertexes,numedges;//图中当前顶点数和边数
}Mgraph;
//创建图的邻接矩阵结构
void CreateMgraph(Mgraph *G){
int i,j,k,w;
cout<<"输入顶点数和边数:";
cin>>G->numvertexes>>G->numedges;
for(i=0;i<G->numvertexes;i++)//输入顶点数和边数
{
cout<<"请输入第"<<i<<"个顶点"<<endl;
cin>>G->vexs[i];
}
//初始化
for(i=0;i<G->numvertexes;i++)
for(j=0;j<G->numvertexes;j++){
if(i==j)
G->arc[i][j]=0;//对角线元素的值位0
else
G->arc[i][j]=INFINITY;
}
for(k=0;k<G->numedges;k++){
cout<<"请输入边(vi,vj)的下标i,下标j,以及权值w:";
cin>>i>>j>>w;
G->arc[i-1][j-1]=w;//与无向图的区别就在这里
}
}
//输出图的邻接矩阵
void ShowMgraph(Mgraph G)
{
int i,j;
cout<<"\n打印结果:"<<endl;
cout<<"顶点元素为:"<<endl;
for(i=0;i<G.numvertexes;i++)
cout<<G.vexs[i]<<" ";
cout<<endl;
cout<<"输出的邻接矩阵为:\n";
cout<<"\t";
for(i=0;i<G.numvertexes;i++)
printf("%8c",G.vexs[i]);
for(i=0;i<G.numvertexes;i++){
printf("\n%8c",G.vexs[i]);
for(j=0;j<G.numvertexes;j++){
if(G.arc[i][j]==65535)
printf("%8s","∞");
else
printf("%8d",G.arc[i][j]);
}
printf("\n");
}
cout<<endl;
}
int main(){
Mgraph G;
CreateMgraph(&G);
ShowMgraph(G);
return 0;
}
走一遍 代码 与上一篇博客很相像