第五章 图论 邻接矩阵存图
2023-12-19 05:27:01
邻接矩阵存图
存储结构定义
#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; // 存边
}
}
遍历
dfs
void dfs(Mgraph *G, int u){ // 全局变量数组 st[n] 初始化为 0
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);
}
}
bfs
void bfs(Mgraph *G, int root){ // 全局变量数组 st[n] 初始化为 0
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;
}
}
}
文章来源:https://blog.csdn.net/2301_78527293/article/details/135059666
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!