[2018年最新整理]图的建立、遍历.docxVIP

  • 4
  • 0
  • 约5.69千字
  • 约 10页
  • 2018-04-15 发布于浙江
  • 举报
[2018年最新整理]图的建立、遍历

一.有向图的邻接表的建立、输出及深度度优先搜索:程序清单:#includestdio.h#includestdlib.h#define MaxVerNum 100typedef char VerType;typedefintArcType;bool visited[MaxVerNum];typedefstructEdgeNode{intadjvex;structEdgeNode *nexadj;}EdgeNode;typedefstructvnode{VerType vertex;EdgeNode *firstedge;}VerNode;typedefVerNodeAdjList[MaxVerNum];typedefstruct{AdjListadjlist;intvexnum,arcnum;}ALGraph;voidCreateALGraph(ALGraph *G)//建立有向图的邻接表{inti,j,k;EdgeNode *s;printf(请输入顶点数和边数:\n);scanf(%d,%d,(G-vexnum),(G-arcnum));printf(请输入顶点信息:\n);for(i=0;iG-vexnum;i++){scanf(\n%c,(G-adjlist[i].vertex));G-adjlist[i].firstedge=NULL;}printf(请输入边的信息:\n);for(k=0;kG-arcnum;k++){scanf(\n%d,%d,i,j);s=(EdgeNode*)malloc(sizeof(EdgeNode));s-adjvex=j;s-nexadj=G-adjlist[i].firstedge;G-adjlist[i].firstedge=s;}}voidprintALGraph(ALGraph *G){inti;EdgeNode *p;printf(%s,%s,%s\n,编号,顶点,相邻边编号);for(i=0;iG-vexnum;i++){printf(%2d%6c,i,G-adjlist[i].vertex);for(p=G-adjlist[i].firstedge;p;p=p-nexadj)printf(-%d,p-adjvex);printf(\n);}}void DFSAL(ALGraph *G,int j){EdgeNode *p;printf(visit vertex:v%c\n,G-adjlist[j].vertex);visited[j]=true;p=G-adjlist[j].firstedge;while(p){ if(!visited[p-adjvex])DFSAL(G,p-adjvex); p=p-nexadj;}}voidDFSTraverseAL(ALGraph* G){inti;for(i=0;iG-vexnum;i++)visited[i]=false;for(i=0;iG-vexnum;i++)if(!visited[i]) DFSAL(G,i);}int main(){ALGraph *al;al=(ALGraph*)malloc(sizeof(ALGraph));CreateALGraph(al);printALGraph(al);printf(输出深度优先序列:\n);DFSTraverseAL(al);return 0;}执行结果:二.无向图的邻接矩阵的建立、输出及广度优先搜索程序清单:#includestdio.h#includestdlib.h#define MaxVerNum 100typedef char VerType;typedefintArcType;bool visited[MaxVerNum];typedefstruct{VerTypevexs[MaxVerNum];ArcTypearcs[MaxVerNum][MaxVerNum];intvexnum,arcnum;}MGraph;voidCreateMGraph(MGraph *G)//建立无向图G的邻接矩阵{inti,j,k;printf(请输入顶点数和边数(输入格式为顶点数,边数):\n);scanf(%d %d,(G-vexnum),(G-arcnum));printf(请输入顶点信息:\n);for(i=0;iG-vexnum;i++)scanf(\n%c,(G-vexs[i]));for(i=0;iG-vexnum;i++)for(j=0;jG-vexnum;j++)G-arcs[i][j]=0;printf(请输入每条边对应的两个顶点的序号(输入格式为:i,j):\n);for(k=0;kG-arcnum;k++){ scanf(%d,%d,i,j); G-arc

文档评论(0)

1亿VIP精品文档

相关文档