- 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
您可能关注的文档
- 某龙城汽运综合楼一二层综合布线系统的方案.doc
- 某高速公路B4标实施性施工组织的设计.doc
- 某高校后勤五层办公楼的设计.doc
- 柑桔加工的项目可行性的研究申报.doc
- 某高校后勤办公楼的设计.doc
- 柒牌男装的的策划纪实.doc
- 染发护理秘诀要记牢.ppt
- 某高端儿童品牌推广的策略的方案.pptx
- 染料厂厂房新建工程雨季施工专项的方案.doc
- 某饲料厂输送自动控制系统毕业的设计.doc
- 计量规程规范 JJF 2362-2026测量设备校准间隔的确定导则.pdf
- 《JJF 2362-2026测量设备校准间隔的确定导则》.pdf
- JJF 2362-2026测量设备校准间隔的确定导则.pdf
- JJF 2373-2026测量不确定度在法制计量符合性评定中的应用.pdf
- GB/T 27997-2026造船门式起重机.pdf
- 计量规程规范 JJF 2373-2026测量不确定度在法制计量符合性评定中的应用.pdf
- 《JJF 2373-2026测量不确定度在法制计量符合性评定中的应用》.pdf
- 中国国家标准 GB/T 27997-2026造船门式起重机.pdf
- 《GB/T 27997-2026造船门式起重机》.pdf
- GB/T 31487.2-2025直流融冰装置 第2部分:换流器.pdf
原创力文档

文档评论(0)