码迷,mamicode.com
首页 > 其他好文 > 详细

技术学习博4

时间:2020-05-25 09:46:44      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:amp   style   init   print   间隔   str   技术   无限   矩阵   

补个档,第十一周学的是图

这个是创建赋权无向图的邻接矩阵

 1 //算法8-1:输入n个顶点和e条边的信息,创建赋权无向图G的邻接矩阵
 2 void CreateUDN(AdjMatrix *G)
 3 {
 4     int i, j, k;
 5     AdjType weight;
 6     VertexData v1, v2;
 7 
 8     printf("请输入图的顶点数目:");
 9     scanf("%d", &G->vexnum );
10 
11     printf("请输入弧的数目:");
12     scanf("%d", &G->arcnum );
13 
14     /*初始化邻接矩阵*/
15     for(i=0; i<G->vexnum; i++)
16         for(j=0; j<G->vexnum; j++)
17             G->arcs[i][j].adj=INFINITY;
18         
19     printf("请输入顶点信息(直接连续输入,不要使用空格或回车间隔,除非空格或回车是顶点存储的元素):");
20     fflush(stdin);    /*消除前面回车的影响*/
21     for(i=0; i<G->vexnum; i++)
22         scanf("%c", &G->vertex[i]);
23 
24     printf("构建邻接矩阵,请输入一条弧的起点、终点与权值,例如\"a,b,10\"\n");
25     for(k=0; k<G->arcnum; k++)
26     {
27         printf("第%d-%d条:", G->arcnum, k+1);
28         fflush(stdin);
29         scanf("%c,%c,%d", &v1, &v2, &weight);
30         i=LocateVex(G, v1);
31         j=LocateVex(G, v2);
32         G->arcs[i][j].adj=weight;
33         G->arcs[j][i].adj=weight;//比有向图只是加了这一句
34     }
35 }

这个是创建赋权有向图的邻接矩阵

 1 //算法8-2:输入n个顶点和e条边的信息,创建赋权有向图G的邻接矩阵
 2 void CreateDN(AdjMatrix *G)
 3 {
 4     int i, j, k;
 5     AdjType weight;
 6     VertexData v1, v2;
 7 
 8     printf("请输入图的顶点数目:");
 9     scanf("%d", &G->vexnum );
10 
11     printf("请输入弧的数目:");
12     scanf("%d", &G->arcnum );
13 
14     /*初始化邻接矩阵*/
15     for(i=0; i<G->vexnum; i++)
16         for(j=0; j<G->vexnum; j++)
17             G->arcs[i][j].adj=INFINITY;
18         
19     printf("请输入顶点信息(直接连续输入,不要使用空格或回车间隔,除非空格或回车是顶点存储的元素):");
20     fflush(stdin);    /*消除前面回车的影响*/
21     for(i=0; i<G->vexnum; i++)
22         scanf("%c", &G->vertex[i]);
23 
24     printf("构建邻接矩阵,请输入一条弧的起点、终点与权值,例如\"a,b,10\"\n");
25     for(k=0; k<G->arcnum; k++)
26     {
27         printf("第%d-%d条:", G->arcnum, k+1);
28         fflush(stdin);
29         scanf("%c,%c,%d", &v1, &v2, &weight);
30         i=LocateVex(G, v1);
31         j=LocateVex(G, v2);
32         G->arcs[i][j].adj=weight;
33     }
34 }

这个是删除赋权有向图的边

 1 //算法8-3:删除赋权有向图G的一条边
 2 void shanchu(AdjMatrix *G)
 3 {
 4     int i,j;
 5     VertexData v1, v2;
 6     printf("请输入要删除的边的起点与终点,例如a,b\n");
 7     fflush(stdin);
 8     scanf("%c,%c", &v1, &v2);
 9     i=LocateVex(G, v1);
10     j=LocateVex(G, v2);
11     G->arcs[i][j].adj=INFINITY;//权值改成无限大
12 }

 

技术学习博4

标签:amp   style   init   print   间隔   str   技术   无限   矩阵   

原文地址:https://www.cnblogs.com/hhw-/p/12954849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!