关闭

无向图的邻接矩阵

244人阅读 评论(0) 收藏 举报
分类:

1、图是一种复杂的数据结构,表现在不仅各顶点的度可以不同,而且顶点之间的关系也错综复杂。从图的定义可知一个图的信息包括两个部分:图中顶点的信息和描述顶点之间关系——边或弧的信息。因此无论采取什么方法来建立图的存储结构,都要完整、准确地反映这两部分的信息。
2、用邻接矩阵存储图,很容易确定图中任意两个顶点之间是否相连。但是,要确定图中具体有多少条边,则必须按行、按列对每个元素进行查找后方能确定,因此花费的时间代价较大,这也是用邻接矩阵存储图的局限性。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20

typedef struct{
    int vertex[MAXSIZE];            //节点信息
    int edge[MAXSIZE][MAXSIZE];     //边信息   
}Graph;

void createGraph(Graph * p,int n,int e){
    Graph * g = p;

    for(int i=0;i<n;i++){           //输入节点值
        g->vertex[i] = i;

    for(int j=0;j<n;j++){           //初始化邻接矩阵
        for(int k=0;k<n;k++){
            g->edge[j][k] = 0;
        }   
    }   

    for(int t=0;t<e;t++){           //连通节点      
        printf("请输入边(i,j)\n");
        scanf("%d,%d",&i,&j);
        g->edge[i][j] = 1;
        g->edge[j][i] = 1;
    }
}

int main(){
    Graph * p = (Graph *)malloc(sizeof(Graph));
    int n,e;

    printf("请输入节点的个数。\n");
    scanf("%d",&n);
    printf("请输入边数。\n");
    scanf("%d",&e);
    createGraph(p,n,e);
    printf("无向图的邻接矩阵表示为:\n");

    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%4d",p->edge[i][j]);
        }
        printf("\n");
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26251次
    • 积分:968
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:22篇
    • 译文:0篇
    • 评论:18条
    文章分类
    最新评论