zoukankan      html  css  js  c++  java
  • 图的简单应用--简单

    源程序:

    //用一维数组表示顶点,二维数组表示边,已知图的顶点和边,用矩阵表示出顶点和边的值
    //有效边用户1表示,无效边用0表示
    #include <stdio.h>
    #define MaxVerNum 100

    typedef struct
    {
    char vexs[MaxVerNum]; //顶点数组,相当于私有变量
    int edges[MaxVerNum][MaxVerNum]; //顶点之间的边,也是私有变量
    int n;
    int e;
    }Mgraph;

    char vertex[]="12345";
    int nvertex=5,nedges=6;
    int connection[][2]={{1,2},{2,3},{2,5},{3,5},{3,4},{1,4}};
    void CreateMgraph(Mgraph *G)
    {
    int i,j,k;
    G->n=nvertex;
    G->e=nedges;

    for(i=0;i<G->n;i++)
    G->vexs[i]=vertex[i]; //相当于给私有变量赋值
    for(i=0;i<G->n;i++)
    for(j=0;j<G->n;j++)
    G->edges[i][j]=0; //初始化边,边用矩阵表示,刚开始全部为0000000000000

    for(k=0;k<G->e;k++)
    {
    i=connection[k][0]-1;
    j=connection[k][1]-1;
    G->edges[i][j]=1;
    G->edges[j][i]=1; //此图为无向图,若是有向图,则没有此行
    }
    }

    void printMgraph(Mgraph &G)
    {
    int i,j;
    printf("矩阵的顶点数:%d ",G.n);
    printf("矩阵的边数:%d ",G.e);
    for(i=0;i<G.n;i++)
    {
    for(j=0;j<G.n;j++)
    printf(" %d",G.edges[i][j]);
    printf(" ");
    }
    }
    //主函数
    void main()
    {
    Mgraph g;
    CreateMgraph(&g);
    printMgraph(g);
    }

    运行结果:

  • 相关阅读:
    [日常训练]FJ省夏令营day1
    [vijos1002][NOIP2005]过河
    [poj2446]Chessboard
    [bzoj1854][SCOI2010]游戏
    [模板]匈牙利算法
    [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子
    笔记3-27
    笔记3-26
    笔记3-25
    Codeforces891C. Envy
  • 原文地址:https://www.cnblogs.com/duanqibo/p/11811029.html
Copyright © 2011-2022 走看看