图的存储

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

邻接矩阵数据类型定义:

#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; 

 

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

阅读更多
个人分类: 图论
想对作者说点什么? 我来说一句

图的存储与遍历(数据结构)

2008年12月10日 124KB 下载

没有更多推荐了,返回首页

不良信息举报

图的存储

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭