欢迎来到天天文库
浏览记录
ID:14403385
大小:67.00 KB
页数:29页
时间:2018-07-28
《c++实现图的基本操作的建立及输出》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、c++实现图的基本操作的建立及输出百度首页
2、百度知道
3、登录淘金行动,宝箱开启!淘金行动火热升级,第二波奖品等你来拿!更有财富值及精美徽章等着你哦~勇往直前,意想不到的惊喜等着你!查看新闻网页贴吧知道MP3图片视频百科文库帮助
4、设置百度知道>电脑/网络>程序设计>C/C++图的建立及输出悬赏分:0
5、解决时间:2008-6-2423:42
6、提问者:power871012任务:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。求c程序最佳答案
7、两个版本.第一个是我自己做的,带深度遍历第二个是同学的,比较全.时间太久了..自己都看不明白了您自己研究吧#include"stdlib.h"#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineMAX_VERTEX_NUM20#defineINFINITY2000000000typedefcharInfoType;typedefcharVertexType;intvisited[20];typedefstructArc
8、Node{intadjvex;//该弧所指向的顶点的位置structArcNode*nextarc;//指向下一条弧的指针InfoType*info;//该弧相关信息的指针}ArcNode;typedefstructVNode{VertexTypedata;//顶点信息ArcNode*firstarc;//指向第一条依附该顶点的弧}VNode,AdjList[MAX_VERTEX_NUM];typedefstruct{AdjListvertices;//结构体数组intvexnum,arcnum;//顶点数、弧数}ALGraph;voidCrea
9、teALGraph(ALGraph&G){inti,j;ArcNode*p;printf("请输入顶点个数和弧数:");scanf("%d%d",&G.vexnum,&G.arcnum);//顶点个数和弧数getchar();printf("读顶点的值:");for(inti=0;i10、){scanf("%d%d",&i,&j);//读入一对顶点序号p=newArcNode;//生成结点,用头插法插入p->adjvex=j;p->nextarc=G.vertices[i].firstarc;G.vertices[i].firstarc=p;}}//build_adjlistintFirstAdjVex(ALGraphG,intv){ArcNode*TNode=G.vertices[v].firstarc;if(TNode!=NULL)returnTNode->adjvex;elsereturn-1;}intNextAdjVex(11、ALGraphG,intv,intw){ArcNode*TNode=G.vertices[v].firstarc;while(TNode->adjvex!=w){TNode=TNode->nextarc;if(!TNode){printf("w不存在.");exit(1);}}TNode=TNode->nextarc;if(TNode!=NULL)returnTNode->adjvex;elsereturn-1;}voidDisplayALGraph(ALGraphG){for(inti=0;i12、c",i,G.vertices[i].data);ArcNode*TNode=G.vertices[i].firstarc;if(FirstAdjVex(G,i)!=-1){printf("->%d",FirstAdjVex(G,i));while(TNode->nextarc!=NULL){printf("->%d",TNode->nextarc->adjvex);TNode=TNode->nextarc;}}printf("");}}voidDFS(ALGraphG,intv){intw;visited[v]=1;printf("%d%c13、->",v,G.vertices[v].data);for(w=FirstAdjVex(G,v);w!=-1;w=NextAdjVex(
10、){scanf("%d%d",&i,&j);//读入一对顶点序号p=newArcNode;//生成结点,用头插法插入p->adjvex=j;p->nextarc=G.vertices[i].firstarc;G.vertices[i].firstarc=p;}}//build_adjlistintFirstAdjVex(ALGraphG,intv){ArcNode*TNode=G.vertices[v].firstarc;if(TNode!=NULL)returnTNode->adjvex;elsereturn-1;}intNextAdjVex(
11、ALGraphG,intv,intw){ArcNode*TNode=G.vertices[v].firstarc;while(TNode->adjvex!=w){TNode=TNode->nextarc;if(!TNode){printf("w不存在.");exit(1);}}TNode=TNode->nextarc;if(TNode!=NULL)returnTNode->adjvex;elsereturn-1;}voidDisplayALGraph(ALGraphG){for(inti=0;i12、c",i,G.vertices[i].data);ArcNode*TNode=G.vertices[i].firstarc;if(FirstAdjVex(G,i)!=-1){printf("->%d",FirstAdjVex(G,i));while(TNode->nextarc!=NULL){printf("->%d",TNode->nextarc->adjvex);TNode=TNode->nextarc;}}printf("");}}voidDFS(ALGraphG,intv){intw;visited[v]=1;printf("%d%c13、->",v,G.vertices[v].data);for(w=FirstAdjVex(G,v);w!=-1;w=NextAdjVex(
12、c",i,G.vertices[i].data);ArcNode*TNode=G.vertices[i].firstarc;if(FirstAdjVex(G,i)!=-1){printf("->%d",FirstAdjVex(G,i));while(TNode->nextarc!=NULL){printf("->%d",TNode->nextarc->adjvex);TNode=TNode->nextarc;}}printf("");}}voidDFS(ALGraphG,intv){intw;visited[v]=1;printf("%d%c
13、->",v,G.vertices[v].data);for(w=FirstAdjVex(G,v);w!=-1;w=NextAdjVex(
此文档下载收益归作者所有