zoukankan      html  css  js  c++  java
  • 图的邻接矩阵表示实现

     1 #include<stdio.h>
     2 #include "matrixGraph.cpp"
     3 
     4 int main(void) {
     5     MatrixGraph G;//定义保存邻接矩阵结构的图
     6     int i, j;
     7 
     8     printf("请输入生成图的类型(0.无向图, 1.有向图):");
     9     scanf("%d", &G.graphType);
    10     printf("请输入图的定点数量和边的数量:");
    11     scanf("%d %d", &G.vertexNum, &G.edgeNum);
    12     for (i = 0; i < G.vertexNum; i++)
    13         for (j = 0; j < G.edgeNum; j++)
    14             G.edge[i][j] = maxValue;//设置矩阵中个元素的值为最大值
    15     createMatrixGraph(&G);//创建邻接矩阵保存的图
    16     printf("邻接矩阵数据如下:
    ");
    17     outMatrix(&G);
    18     return 0;
    19 }
    20 
    21 void createMatrixGraph(MatrixGraph* G) {
    22     int i, j, k, weight;
    23     char start, end;//一条边的两个顶点
    24     printf("请输入各顶点信息:
    ");
    25     for (i = 0; i < G->vertexNum; i++) {
    26         getchar();//读入回车,不然%c会读入
    27         printf("第%d个顶点:", i + 1);
    28         scanf("%c", &G->vertex[i]);
    29     }
    30 
    31     printf("请输入构成各边的两个顶点及权值:
    ");
    32     for (k = 0; k < G->edgeNum; k++) {
    33         getchar();//读入回车,不然%c会读入
    34         printf("第%d条边:", k + 1);
    35         scanf("%c %c %d", &start, &end, &weight);
    36         for (i = 0; start != G->vertex[i]; i++);//在已有定点中查找始结点
    37         for (j = 0; end != G->vertex[j]; j++);//查找末尾结点
    38         G->edge[i][j] = weight;//对应位置保存权值,表示有一条边
    39         if (!G->graphType) G->edge[j][i] = weight;//若是无向图,则邻接矩阵关于对角线位置,也应该有一条边
    40     }
    41 }
    42 
    43 void outMatrix(MatrixGraph* G) {
    44     int i, j;
    45 
    46     for (i = 0; i < G->vertexNum; i++) printf("	%c", G->vertex[i]);//在第一行输出顶点信息
    47     printf("
    ");
    48     for (i = 0; i < G->vertexNum; i++) {
    49         printf("%c", G->vertex[i]);
    50         for (j = 0; j < G->vertexNum; j++) {
    51             if (G->edge[i][j] == maxValue) printf("");
    52             else printf("	%d", G->edge[i][j]);//输出边的权值
    53         }
    54         printf("
    ");
    55     }
    56 }

    其中 "matrixGraph''文件内容如下

     1 #define vertex_max 26
     2 #define maxValue 32767
     3 typedef struct {
     4     char vertex[vertex_max];//储存定点信息
     5     int edge[vertex_max][vertex_max];//存储边的权的矩阵
     6     int isTrav[vertex_max];//遍历标志
     7     int vertexNum;//点的数目
     8     int edgeNum;//边的数目
     9     int graphType;//图的类型,0表示无向图,1表示有向图
    10 }MatrixGraph;
    11 
    12 void createMatrixGraph(MatrixGraph* G);//创建邻接矩阵
    13 void outMatrix(MatrixGraph* G);//输出邻接矩阵
  • 相关阅读:
    在springMVC的controller层获取view层的参数的方式
    springMVC创建基础变量
    javascript 继承
    CSS3的新属性的一下总结
    常用js函数整理--common.js
    function与感叹号
    javascript void运算符
    ui组件--弹出层layer的使用
    组件,控件,插件,库都是什么鬼啊
    jsdoc文档
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/12903680.html
Copyright © 2011-2022 走看看