zoukankan      html  css  js  c++  java
  • 技术学习博4

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

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

     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"
    ");
    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"
    ");
    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
    ");
     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 }
  • 相关阅读:
    PHP运行出现Notice : Use of undefined constant 的解决办法
    Winfrom 设置Panel添加滚动条
    Unable to find the wrapper ”https”
    winfrom 控件的显示隐藏方法
    winfrom 窗体控件实现二级联动
    【最小生成树】Bzoj1601[Usaco2008 Oct]灌水
    【强连通分量】Bzoj1051 HAOI2006 受欢迎的牛
    【Homework】LCA&RMQ
    【建图+最短路】Bzoj1001 狼抓兔子
    【组合数学】Bzoj2916 [Poi1997]Monochromatic Triangles
  • 原文地址:https://www.cnblogs.com/hhw-/p/12954849.html
Copyright © 2011-2022 走看看