欢迎来到天天文库
浏览记录
ID:37764398
大小:49.00 KB
页数:8页
时间:2019-05-30
《数据结构--图的遍历》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//图的遍历#include#include#defineERROR0#defineOK1//定义循环队列#defineMAXQSIZE1024typedefintQElemType;typedefstruct{QElemTypedata[MAXQSIZE];intfront,rear;intnum;}c_SeqQ;#defineMaxVerNum100#defineMaxInt32767//定义邻接矩阵数据类型typedefcharVertexType;typedefintArcType;typedefintOtheInfo;typ
2、edefstruct{VertexTypevexs[MaxVerNum];ArcTypearcs[MaxVerNum][MaxVerNum];intvexnum,arcnum;}AMGraph;//定义邻接表数据类型typedefstructArcNode{intadjvex;structArcNode*nextarc;OtheInfoinfo;}ArcNode;typedefstructVNode{VertexTypedata;ArcNode*firstarc;}VNode,AdjList[MaxVerNum];typedefstruct{AdjListvertices
3、;intvexnum,arcnum;}ALGraph;//循环队列的初始化intInitQueue_Sq(c_SeqQ*&Q){if(!(Q=newc_SeqQ))returnERROR;Q->front=Q->rear=0;Q->num=0;returnOK;}//销毁顺序队列intDestroyQueue_Sq(c_SeqQ*Q){if(!Q){deleteQ;returnOK;}returnERROR;}//判断顺序队列空intQueueEmpty_Sq(c_SeqQ*Q){return(Q->num==0);}//入队操作intEnQueue_Sq(c_SeqQ*
4、Q,QElemTypee){if(Q->num==MAXQSIZE)returnERROR;Q->data[Q->rear]=e;Q->rear=(Q->rear+1)%MAXQSIZE;Q->num++;returnOK;}//出队操作intDeQueue_Sq(c_SeqQ*Q,QElemType&e){if(Q->num==0)returnERROR;e=Q->data[Q->front];Q->front=(Q->front+1)%MAXQSIZE;Q->num--;returnOK;}//建立图G的邻接矩阵存储voidCreateAMGraph(AMGraph&
5、G){inti,j,k;intflag=1;printf("图为有向图,还是无向图,输入1,表示无向图,否则,表示有向图:");scanf("%d",&flag);printf("请输入顶点数和边数(输入格式为:顶点数,边数):");scanf("%d,%d",&G.vexnum,&G.arcnum);printf("请输入顶点信息(例如:若有5个顶点,则连续输入ABCDE):");flushall();for(i=0;i6、um;j++)G.arcs[i][j]=0;printf("注意:顶点序列对应的序号从0起始编号,即0,1,2......");printf("请输入每条边对应的两个顶点的序号(输入格式为:i,j):");for(k=0;k7、8、i>=G.vexnum9、10、j<011、12、j>=G.vexnum){p13、rintf("输入出错!");k--;continue;}printf("(%c--%c)",G.vexs[i],G.vexs[j]);G.arcs[i][j]=1;if(flag==1)G.arcs[j][i]=1;}}//建立图的邻接表存储voidCreateALGraph(ALGraph&G){inti,j,k;ArcNode*s;intflag=1;printf("图为有向图,还是无向图,输入1,表示无向图,否则,表示有向图:");scanf("%d",&flag);printf("请输入顶点数和边数(输入格式
6、um;j++)G.arcs[i][j]=0;printf("注意:顶点序列对应的序号从0起始编号,即0,1,2......");printf("请输入每条边对应的两个顶点的序号(输入格式为:i,j):");for(k=0;k7、8、i>=G.vexnum9、10、j<011、12、j>=G.vexnum){p13、rintf("输入出错!");k--;continue;}printf("(%c--%c)",G.vexs[i],G.vexs[j]);G.arcs[i][j]=1;if(flag==1)G.arcs[j][i]=1;}}//建立图的邻接表存储voidCreateALGraph(ALGraph&G){inti,j,k;ArcNode*s;intflag=1;printf("图为有向图,还是无向图,输入1,表示无向图,否则,表示有向图:");scanf("%d",&flag);printf("请输入顶点数和边数(输入格式
7、
8、i>=G.vexnum
9、
10、j<0
11、
12、j>=G.vexnum){p
13、rintf("输入出错!");k--;continue;}printf("(%c--%c)",G.vexs[i],G.vexs[j]);G.arcs[i][j]=1;if(flag==1)G.arcs[j][i]=1;}}//建立图的邻接表存储voidCreateALGraph(ALGraph&G){inti,j,k;ArcNode*s;intflag=1;printf("图为有向图,还是无向图,输入1,表示无向图,否则,表示有向图:");scanf("%d",&flag);printf("请输入顶点数和边数(输入格式
此文档下载收益归作者所有