• 技术学习博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 }
  • 相关阅读:
    接收xml请求流并解析字符串的例子
    通过style来控制隔行显示不同颜色 .
    显示有模式的有页面的弹出窗口 .
    WSDL生成服务端JAVA代码.bat
    web上下文监听器ServletContextListener 例子 .
    使用监听器:定时清除map缓存的key value .
    Timer和TimerTask类 例子 .
    常用的正则表达式
    算法找出数组中出现次数超过一半的数
    C++讨厌的临时变量什么时候产生
  • 原文地址:https://www.cnblogs.com/hhw-/p/12954849.html
Copyright © 2020-2023  润新知