案例六 图应用.docVIP

  • 2
  • 0
  • 约4.5千字
  • 约 7页
  • 2018-06-29 发布于福建
  • 举报
案例六 图应用

案例六 图的应用(遍历及最短路径)案例内容:编写按键盘输入的数据建立图的邻接矩阵存储。编写图的深度优先搜索遍历程序。编写图的广度优先搜索遍历程序。编写图的最小生成树运行结果:案例实现:#includestdio.h#includemalloc.h#define mavx 100//最大顶点个数typedef int Infotype;typedef struct { int no;//顶点编号 Infotype info;//顶点其他信息,用于存放边的权值}VertexType;//顶点类型typedef struct{ int edges[mavx][mavx];//邻接矩阵 int vexnum,arcnum;//顶点数,弧数 VertexType vexs[mavx];//存放顶点信息}MGraph;//邻接矩阵类型typedef struct ANode{//弧的结点结构类型 int adjvex;//弧的终点位置 struct ANode * nextarc;//指向下一条弧的指针 Infotype info;//弧的相关信息,这里用于存放权值}ArcNode;typedef int Vertex;typedef struct Vnode{//邻接表头结点的类型 Vertex data;//顶点信息 ArcNode * firstarc;//指向第一条弧}VNode;typedef VNode AdjList[mavx];//AdjList是邻接表类型typedef struct {//图的邻接表类型 AdjList adjlist;//邻接表 int n,e;//图中顶点数n和边数e}ALGraph;#define INF 32767int visited[mavx];void MatToList(MGraph g,ALGraph *G){ int i,j,n=g.vexnum;//n为顶点数 ArcNode * p; G=(ALGraph *)malloc(sizeof(ALGraph)); for(i=0;in;i++)//给邻接表中所有头结点的指针域置初值 G-adjlist[i].firstarc=NULL; for(i=0;in;i++)//检查邻接矩阵中每个元素 for(j=n-1;j=0;j--) if(g.edges[i][j]!=0)//邻接矩阵的当前元素不为0 { p=(ArcNode *)malloc(sizeof(ArcNode));//创建一个结点 p-adjvex=j; p-info=g.edges[i][j];//存放边的权值 p-nextarc=G-adjlist[i].firstarc;//将*p链到链表后 G-adjlist[i].firstarc=p; } G-n=n;G-e=g.arcnum;}void ListToMat(ALGraph *G,MGraph g)//将邻接表转换成邻接矩阵{ int i,j,n=G-n; ArcNode * p; for(i=0;in;i++)//g.edges[i][j]赋初值0 for(j=0;jn;j++) g.edges[i][j]=0; for(i=0;in;i++) { p=G-adjlist[i].firstarc; while(p!=NULL)//对所有相邻顶点进行处理 { g.edges[i][p-adjvex]=p-info; p=p-nextarc; } } g.vexnum=n;g.arcnum=G-e;}void DispMat(MGraph g){//输出邻接矩阵 int i,j; for(i=0;ig.vexnum;i++) { for(j=0;jg.vexnum;j++) if(g.edges[i][j]==INF) printf(%3s,∞); else printf(%3d,g.edges[i][j]); printf(\n); }}void DispAdj(ALGraph *G)//输出邻接表{ int i; ArcNode *p; for(i=0;iG-n;i++) { p=G-adjlist[i].firstarc; if(p!=NULL) printf(%3d:,i); while(p!=NULL) { printf(%3d,p-adjvex); p=p-nextarc; } printf(\n); }}void DFS(ALGraph * G,int v)//递归算法深度优先遍历{ ArcNode *p; visited[v]=1; printf(%3d,v); p=G-adjli

文档评论(0)

1亿VIP精品文档

相关文档