将一个无向图的邻接表转换为邻接矩阵算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<>
#include<>
#define max 20
#define digit 1
#define zero 0
typedef struct{
int num;
char data;
}Vertex;
typedef struct{
int n; exdata=ch;
alg->ve[i].firstarc=NULL;
}
printf("输入弧的信息(弧的两端点):\n");
for(i=0;i scanf("%d%d",&a,&b); AR=(ARCNODE *)malloc(sizeof(ARCNODE)); AR->adjvex=b; AR->info=alg->ve[b].vexdata; AR->nextarc=alg->ve[a].firstarc; alg->ve[a].firstarc=AR; AR=(ARCNODE *)malloc(sizeof(ARCNODE)); AR->adjvex=a; AR->info=alg->ve[a].vexdata; AR->nextarc=alg->ve[b].firstarc; alg->ve[b].firstarc=AR; } return alg; } void ALGout(ALGraph *alg){ um=i; mg->vexs[i].data=alg->ve[i].vexda ta; } ARCNODE *p; for(i=0;i p=alg->ve[i].firstarc; while(p!=NULL){ mg->edges[i][p->adjvex]=1; mg->edges[p->adjvex][i]=1; p=p->nextarc; } } return mg; } void MGout(MGraph *mg){ //输出邻接矩阵 int i,j,k; k=mg->n; for(i=0;i for(j=0;j if(mg->edges[i][j]==1) printf("%-5d",digit); else printf("%-5d",zero); } printf("\n"); } } void main(){ MGraph *mg; ALGraph *alg; printf("建立无向图的邻接表:\n"); alg=Creat_alg(); printf("邻接表输出:\n"); ALGout(alg); mg=ALG_change_MG(alg); printf("邻接矩阵输出:\n"); MGout(mg); }