关闭

图的存储

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

在内存中图一般来说有主要是两种存储方式:邻接矩阵、邻接链表

邻接矩阵数据类型定义:

#define MAX 最大顶点个数

typedef struct

{

  int no;//顶点编号

 InforType info;//顶点其他信息

}VertexType;//顶点类型

typedef struct

{

 int edges[MAX][MAX];//边

int n;//顶点个数

int e;//边数

VertexType VInfor[MAX];

}MGraph;

邻接矩阵存储图,可以很容易确定图中任意两个顶点之间是否有边相连,但是如果要确定图中有多少条边,代价就大啦,需要按行和列来对每个元素遍历

 

邻接链表:

#define  MaxVertexNum 100   

typedef char VertexType;  

typedef struct node   //边表节点   

{  

   int adjvex;  

   node* next;  

}EdgeNode;  

 

typedef struct     //顶点表节点   

{  

  VertexType vertex;  

   EdgeNode* firstedge;  //第一条边

}VertexNode;  

  

typedef VertexNode AdjList[MaxVertexNum];  

  

typedef struct   

{   

    AdjList adjlist;  

    int n,e;  

}ALGraph; 

 

邻接链表能够很快确定以某顶点为起点的边,但是要确定以某顶点为终点的边就需遍历所有链表了,所以也可以根据需要建立逆邻接链表,就是对每个顶点链接的都是指向该顶点的边

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:185次
    • 积分:20
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行