图的存储结构

1. 邻接矩阵表示是最简单的,可以用matlab实现dij算法

2.邻接表是最常用的(邻接表可以看成一种广义线性表)

2.1 每个顶点vi建立一个单链表(顶点的编号是在图的生成过程中就确定了),每个链表有一个表头节点,有数据域和firstarc域(指向第一个相连的结点),表头结点顺序存储便于随机访问

2.2 每个顶点的链表存放与该顶点相连的边

2.3 每个node有3个域,adjvex指示与顶点vi邻接的点在图中的位置,nextarc指示下一条(边或者弧)的节点,数据域存储相关数据。

 

#define Max_Vertex_num 20

 

typedef struct ArcNode   //存储边的结构

{

int adjvex;  // 该弧所指向的顶点的位置

struct ArcNode* nextarc; // 指向下一条弧的指针

InforType *info; 

}

typedef struct VNode  // 存储顶点的结构

{

  VertexType data;// 顶点信息

 ArcNode *firstArc; // 指向

}

 

 

十字链表中十字cross的由来:

横向是边的链表,纵向也是边的链表

横向链表上边的共同特征是这些边的源头顶点都相同
纵向链表上边地共同特征是这些边地目的顶点都相同


邻接多重表的由来:

邻接表(DG或者UDG)是顶点随机存储即存储成数组,同一个点对应的边串成链表
十字链表用来表示DG,改进是同一个节点的出边和入边分别串成链表
邻接多重表用来表示UDG,显然也要改进,而且是在十字链表的基础上改进,改进的方法是改变边的struct的存储,即增加域,vi和vj表示该边的两个点。和十字链表一样,也有两个边的node的指针域来向vi相连的所有边的链表和vj相连的所有边的链表。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值