1.邻接矩阵存储
l邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,顶点的编号依次为0-1.
G的邻接矩阵A是n阶方阵,定义:
1)无向图,则
A[i][j]=1:若(i,j)属于E(G) 0:其它
2)G为有向图,则
A[i][j]=1:若<i,j>属于E(G) 0:其它
3)带权无向图,则
A[i][j]=wij : 若i不等j且(i,j)属于E(G) 0:i=j 无穷:其它
4)带权有向图 ,则
A[i][j]=wij : 若i不等j且<i,j>属于E(G) 0:i=j 无穷:其它
图的连接矩阵的创建和输出
#include<stdio.h>
#define MaxVertices 100 //设置最大100个顶点
#define MaxWeight 520521 //不邻接是为520521,但输出时用∞
typedef struct{ //包含权的邻接矩阵的定义
int Vertices[MaxVertices]; //顶点信息的数组
int Edge[MaxVertices][MaxVertices]; //边的权信息数组
int numV,numE; //顶点数 边数
} AdjMatrix;
void CreateGraph(AdjMatrix *G){//生成图
int n,e,vi,vj,w,i,j;
printf("请输入图的顶点数和边数(空格隔开):");
scanf("%d%d",&n,&e);
G->numV=n;
G->numE=e;
for(i=0;i<n;i++) //图的初始化
for(j=0;j<n;j++){
if(i==j)
G->Edge[i][j]=0;
else
G->Edge[i][