欢迎来到天天文库
浏览记录
ID:15522717
大小:25.00 KB
页数:4页
时间:2018-08-03
《图的邻接表存储表存储表示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//------------------ͼµÄÁÚ½Ó±í´æ´¢±íʾ------------------#include#include#include#defineOK1#defineERROR0typedefintStatus;#defineMAX_VERTEX_NUM20#defineMAX_NAME3typedefintInfoType;typedefcharVertexType[MAX_NAME];typedefenum{D
2、G,DN,UDG,UDN}GraphKind;//{ÓÐÏòͼ,ÓÐÏòÍø,ÎÞÏòͼ,ÎÞÏòÍø}typedefstructArcNode{intadjvex;structArcNode*nextarc;InfoType*info;//¸Ã»¡ÓйØÐÅÏ¢µÄÖ¸Õë}ArcNode;typedefstructVNode{VertexTypedata;ArcNode*firstarc;}VNode,AdjList[MAX_VERTEX_NUM];typedefstruct{AdjLis
3、tvertices;intvexnum,arcnum;intkind;}ALGraph;//Ç󶥵ãÔÚͼÖеÄλÖÃintLocateVex(ALGraphG,VertexTypeu){inti;for(i=0;i4、printf("ÇëÊäÈëͼµÄÀàÐÍ(ÓÐÏòͼ:0,ÓÐÏòÍø:1,ÎÞÏòͼ:2,ÎÞÏòÍø:3):");scanf("%d",&(*G).kind);printf("ÇëÊäÈëͼµÄ¶¥µãÊý,±ßÊý:");scanf("%d,%d",&(*G).vexnum,&(*G).arcnum);printf("ÇëÊäÈë%d¸ö¶¥µãµÄÖµ(×î´óÃüÃûΪ%d¸ö×Ö·û):",(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexn5、um;++i){scanf("%s",(*G).vertices[i].data);(*G).vertices[i].firstarc=NULL;}if((*G).kind==16、7、(*G).kind==3)printf("ÊäÈëÿÌõ±ßµÄȨֵ+»¡Î²+»¡Í·:");elseprintf("ÊäÈëÿÌõ±ßµÄ»¡Î²+»¡Í·:");for(k=0;k<(*G).arcnum;++k){if((*G).kind==18、9、(*G).kind==3)scanf("%d%s%10、s",&w,v1,v2);elsescanf("%s%s",v1,v2);i=LocateVex(*G,v1);j=LocateVex(*G,v2);p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;if((*G).kind==111、12、(*G).kind==3){p->info=(int*)malloc(sizeof(int));*(p->info)=w;}elsep->info=NULL;p->nextarc=(*G).vertices[i].first13、arc;(*G).vertices[i].firstarc=p;if((*G).kind>=2){p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=i;if((*G).kind==3){p->info=(int*)malloc(sizeof(int));*(p->info)=w;}elsep->info=NULL;p->nextarc=(*G).vertices[j].firstarc;(*G).vertices[j].firstarc=p;}}return14、OK;}//Êä³övoidDisplay(ALGraphG){inti;ArcNode*p;switch(G.kind){caseDG:printf("½¨Á¢µÄÊÇÓÐÏòͼ:");break;caseDN:printf("½¨Á¢µÄÊÇÓÐÏòÍø:");break;caseUDG:printf("½¨Á¢µÄÊÇÎÞÏòͼ:");break;caseUDN:printf("½¨Á¢µÄÊÇÎÞÏòÍø:");}printf("%d¸ö¶
4、printf("ÇëÊäÈëͼµÄÀàÐÍ(ÓÐÏòͼ:0,ÓÐÏòÍø:1,ÎÞÏòͼ:2,ÎÞÏòÍø:3):");scanf("%d",&(*G).kind);printf("ÇëÊäÈëͼµÄ¶¥µãÊý,±ßÊý:");scanf("%d,%d",&(*G).vexnum,&(*G).arcnum);printf("ÇëÊäÈë%d¸ö¶¥µãµÄÖµ(×î´óÃüÃûΪ%d¸ö×Ö·û):",(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexn
5、um;++i){scanf("%s",(*G).vertices[i].data);(*G).vertices[i].firstarc=NULL;}if((*G).kind==1
6、
7、(*G).kind==3)printf("ÊäÈëÿÌõ±ßµÄȨֵ+»¡Î²+»¡Í·:");elseprintf("ÊäÈëÿÌõ±ßµÄ»¡Î²+»¡Í·:");for(k=0;k<(*G).arcnum;++k){if((*G).kind==1
8、
9、(*G).kind==3)scanf("%d%s%
10、s",&w,v1,v2);elsescanf("%s%s",v1,v2);i=LocateVex(*G,v1);j=LocateVex(*G,v2);p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;if((*G).kind==1
11、
12、(*G).kind==3){p->info=(int*)malloc(sizeof(int));*(p->info)=w;}elsep->info=NULL;p->nextarc=(*G).vertices[i].first
13、arc;(*G).vertices[i].firstarc=p;if((*G).kind>=2){p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=i;if((*G).kind==3){p->info=(int*)malloc(sizeof(int));*(p->info)=w;}elsep->info=NULL;p->nextarc=(*G).vertices[j].firstarc;(*G).vertices[j].firstarc=p;}}return
14、OK;}//Êä³övoidDisplay(ALGraphG){inti;ArcNode*p;switch(G.kind){caseDG:printf("½¨Á¢µÄÊÇÓÐÏòͼ:");break;caseDN:printf("½¨Á¢µÄÊÇÓÐÏòÍø:");break;caseUDG:printf("½¨Á¢µÄÊÇÎÞÏòͼ:");break;caseUDN:printf("½¨Á¢µÄÊÇÎÞÏòÍø:");}printf("%d¸ö¶
此文档下载收益归作者所有