第十二周项目1 图基本算法库
来源:互联网 发布:淘宝客寻找内部优惠券 编辑:程序博客网 时间:2024/06/03 07:35
头文件:
#define MAXV 100 #define INF 32767 typedef int InfoType;//以下定义邻接矩阵类型typedef struct{ int no; InfoType info; } VertexType; typedef struct { int edges[MAXV][MAXV]; int n,e; VertexType vexs[MAXV]; } MGraph; //以下定义邻接表类型typedef struct ANode { int adjvex; struct ANode *nextarc; InfoType info; } ArcNode;typedef int Vertex;typedef struct Vnode { Vertex data; int count; ArcNode *firstarc; } VNode;typedef VNode AdjList[MAXV]; typedef struct{ AdjList adjlist; int n,e; } ALGraph; void ArrayToMat(int *Arr, int n, MGraph &g); void ArrayToList(int *Arr, int n, ALGraph *&); void MatToList(MGraph g,ALGraph *&G);void ListToMat(ALGraph *G,MGraph &g);void DispMat(MGraph g);void DispAdj(ALGraph *G);#include <stdio.h>#include <malloc.h>源文件:
#include"head.h"void ArrayToMat(int *Arr, int n, MGraph &g){ int i,j,count=0; g.n=n; for (i=0; i<g.n; i++) for (j=0; j<g.n; j++) { g.edges[i][j]=Arr[i*n+j]; if(g.edges[i][j]!=0) count++; } g.e=count;}void ArrayToList(int *Arr, int n, ALGraph *&G){ int i,j,count=0; ArcNode *p; G=(ALGraph *)malloc(sizeof(ALGraph)); G->n=n; for (i=0; i<n; i++) G->adjlist[i].firstarc=NULL; for (i=0; i<n; i++) for (j=n-1; j>=0; j--) if (Arr[i*n+j]!=0) { p=(ArcNode *)malloc(sizeof(ArcNode)); p->adjvex=j; p->info=Arr[i*n+j]; p->nextarc=G->adjlist[i].firstarc; G->adjlist[i].firstarc=p; } G->e=count;}void MatToList(MGraph g, ALGraph *&G){ int i,j; ArcNode *p; G=(ALGraph *)malloc(sizeof(ALGraph)); for (i=0; i<g.n; i++) G->adjlist[i].firstarc=NULL; for (i=0; i<g.n; i++) for (j=g.n-1; j>=0; j--) if (g.edges[i][j]!=0) { p=(ArcNode *)malloc(sizeof(ArcNode)); p->adjvex=j; p->info=g.edges[i][j]; p->nextarc=G->adjlist[i].firstarc; G->adjlist[i].firstarc=p; } G->n=g.n; G->e=g.e;}void ListToMat(ALGraph *G,MGraph &g){ int i,j; ArcNode *p; g.n=G->n; g.e=G->e; for (i=0; i<g.n; i++) for (j=0; j<g.n; j++) g.edges[i][j]=0; for (i=0; i<G->n; i++) { p=G->adjlist[i].firstarc; while (p!=NULL) { g.edges[i][p->adjvex]=p->info; p=p->nextarc; } }}void DispMat(MGraph g){ int i,j; for (i=0; i<g.n; i++) { for (j=0; j<g.n; 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; i<G->n; i++) { p=G->adjlist[i].firstarc; printf("%3d: ",i); while (p!=NULL) { printf("-->%d/%d ",p->adjvex,p->info); p=p->nextarc; } printf("\n"); }}main函数:
#include"head.h"int main(){ MGraph g1,g2; ALGraph *G1,*G2; int A[6][6]= { {0,5,0,7,0,0}, {0,0,4,0,0,0}, {8,0,0,0,0,9}, {0,0,5,0,0,6}, {0,0,0,5,0,0}, {3,0,0,0,1,0} }; ArrayToMat(A[0], 6, g1); printf(" 有向图g1的邻接矩阵:\n"); DispMat(g1); ArrayToList(A[0], 6, G1); printf(" 有向图G1的邻接表:\n"); DispAdj(G1); MatToList(g1,G2); printf(" 图g1的邻接矩阵转换成邻接表G2:\n"); DispAdj(G2); ListToMat(G1,g2); printf(" 图G1的邻接表转换成邻接邻阵g2:\n"); DispMat(g2); printf("\n"); return 0;}
0 0
- 第十二周 项目1 图基本算法库
- 第十二周项目(1):图基本算法库
- 第十二周 项目1-图基本算法库
- 第十二周实践项目1—图基本算法库
- 第十二周项目1—图基本算法库
- 第十二周 项目1 图基本算法库
- 第十二周项目1-图基本算法库
- 第十二周——【项目1 - 图基本算法库】
- 第十二周--项目1图基本算法库
- 第十二周项目1——图基本算法库
- 第十二周项目1-图基本算法库
- 第十二周项目1-图基本算法库
- 第十二周项目1 - 图基本算法库
- 第十二周项目1-图基本算法库
- 第十二周项目1-图基本算法库
- 第十二周项目1--图基本算法库
- 第十二周项目1图基本算法库
- 第十二周 项目1 图基本算法库
- Java常见异常总结
- 第十五周--验证算法
- BlockingQueue的使用
- TabLayout 修改字体的方法
- 12招婚礼配色技巧 帮你选择你最心仪的布置
- 第十二周项目1 图基本算法库
- hibernate持久化实现——数据缓存
- HTML5新功能Geolocation构建基于地理位置的Web应用
- 多线程设计模式-Active Object
- linux特殊命令
- 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。
- HDU 4507 恨7不成妻(数位dp)
- 第15周 项目1-哈希表及其运算的实现
- 求解强连通分量算法之---Kosaraju算法