邻接矩阵存图
存储结构定义
#define MaxSize 10
typedef char DataType;
typedef strcut{
DataType vertex[MaxSize];
int edge[MaxSize][MaxSize];
int vertexNum, edgeNum;
} Mgraph;
建图
void CreateGraph(Mgraph *G, DataType a[], int n, int m){
G->vertex=n, G->edgeNum=m;
for(int i=0; i<n; i++) G->vertex[i]=a[i];
for(int i=0; i<m; i++) for(int j=0; j<m; j++) G->edge[i][j]=0;
for(int i=0; i<m; i++){
int x, y;
scanf("%d%d", &x, &y);
G->edge[x][y]=G->edge[y][x]=1;
}
}
遍历
void dfs(Mgraph *G, int u){
printf("%c ", G->vertex[u]);
st[u]=true;
for(int v=0; v<G->vertexNum; v++){
if(G->vertex[u][v]==1 && st[v]==0)
dfs(G, v);
}
}
void bfs(Mgraph *G, int root){
int Q[MaxSize];
int front=-1, rear=-1;
printf("%c ", G->vertex[root]);
Q[++rear]=root, st[root]=1;
while(front != rear){
int u=Q[front++];
for(int v=0; v<G->vertexNum; v++)
if(G->edge[i][j]==1 && st[v]==0){
printf("%c ", G->vertex[v]);
Q[++rear]=v, st[v]=1;
}
}
}