美文网首页
图之邻接矩阵表示

图之邻接矩阵表示

作者: Gxpzy | 来源:发表于2016-11-22 15:50 被阅读28次
#define MAX_VERTEX_NUM  20//最多顶点数
#define INFINITY 32768 //表示无穷大
//图的种类
typedef enum{DG, DN, UDG, UDN} GraphKind;
typedef char VertexData;//顶点数据类型
typedef struct ArcNode{
    unsigned int adj;//无权用 0 1,有权则为权值
}ArcNode;
typedef struct {
    VertexData vertex[MAX_VERTEX_NUM];
    ArcNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵
    int vexnum, arcnum;//顶点数和弧数
    GraphKind kind;//图的种类
} adjMatrix;

//求顶点的位置
int LocateVertex(adjMatrix *G, VertexData v){
    int j = errno, k;
    for (k = 0; k < G->vexnum; k++) {
        if (G->vertex[k] == v) {
            j = k;
            break;
        }
    }
    return j;
}
//创建一个有向网
int CreateDN(adjMatrix *G){
    int i, j, k, weight;
    VertexData v1, v2;
    printf("请输入弧数,顶点数");
    scanf("%d,%d", &G->arcnum, &G->vexnum);//输入弧数,顶点数
//    初始化邻接矩阵
    for (i = 0; i < G->vexnum; i++) {
        for (j = 0; j < G->vexnum; j++) {
            G->arcs[i][j].adj = INFINITY;
        }
    }
    
//    输入图的顶点
    for (i = 0; i < G->vexnum; i++) {
        printf("请输入顶点%d\n",i);
        scanf("%c",&G->vertex[i]);
        while(getchar() != '\n');
    }
    
    for (k = 0; k < G->arcnum; k++) {
        printf("请为弧%d输入顶点1,顶点2,权值\n",k);
        scanf("%c,%c,%d",&v1, &v2, &weight);//输入弧的顶点,权值
        while(getchar() != '\n');
        i = LocateVertex(G, v1);
        j = LocateVertex(G, v2);
        G->arcs[i][j].adj = weight;//建立弧                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
    }
    return 1;
}
int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    adjMatrix mat;
    CreateDN(&mat);
    printf("%d\n",mat.arcs[0][1].adj);
    return 0;
}

相关文章

  • 数据结构之图的存储结构邻接矩阵法

    一、邻接矩阵法定义 二、邻接矩阵法表示图 2.1 邻接矩阵法表示图的定义 2.2 邻接矩阵法表示图的示例 2.2....

  • 图之邻接矩阵表示

  • 数据结构——图

    1、图的概念 2、图的抽象数据类型 3、图的存储结构 图的邻接矩阵表示 邻接矩阵的代码表示

  • 图的五种存储结构

    1.邻接矩阵 图的邻接矩阵(Adjacency Matrix):图的邻接矩阵用两个数组来表示图。一个一维数组存储图...

  • 图的表示和存储结构

    图的表示:两种表示方法 邻接矩阵和邻接表 无向图 有向图 图的权 连通图 度 图的存储结构 1、邻接矩阵存储 浪...

  • 2019-03-13

    python实现图:邻接表表示: 邻接矩阵表示: 深度优先,广度优先:

  • 数据结构课程 第十周 图

    定义和基本术语 案例引入 图的类型定义 图的存储结构 1数组(邻接矩阵)表示法 邻接矩阵的建立 邻接矩阵的优缺点 ...

  • 离散数学中的图矩阵

    本文涉及到的图矩阵主要包括邻接矩阵和关联矩阵,在离散数学中这部分内容属于用矩阵来表示图。 邻接矩阵 用矩阵表示图,...

  • 图 - Graph

    基本概念 边(Edge) 顶点(Vertex) 度(Degree) 图的表示邻接矩阵:用来表示稠密图邻接表:表示稀...

  • 第十九讲 数据结构之图(二)

    图的存储结构 邻接矩阵 图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。一个一维数组...

网友评论

      本文标题:图之邻接矩阵表示

      本文链接:https://www.haomeiwen.com/subject/chappttx.html