9.2.2邻接表存储方法
来源:互联网 发布:cf手游刷钻软件注册码 编辑:程序博客网 时间:2024/06/04 17:48
图的邻接表存储方法是一种顺序分配与链式分配相结合的存储方法。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对有向图是以顶点vi为尾的弧。)每个单链表上附设一个表头结点。表结点和表头结点的结构如下:
其中,表结点由三个域组成,adjvex指示与顶点vi邻接的点在图中的位置,nextarc指示下一条边或弧的结点,info存储与边或弧相关的信息,如权值等。表头结点由两个域组成,data存储顶点vi的名或其他信息,firstarc指向链表中的第一个结点。
邻接表的特点如下:
- 邻接表表示不唯一。这是因为在每个顶点对应的单链表中,各边结点的链接次序可以是任意的,取决于建立邻接表的算法以及边的输入次序。
- 对于有n个顶点和e条边的无向图,其邻接表有n个顶点结点和2e个边结点。显然,对于稀疏图,邻接表比邻接矩阵要节省空间。
- 对于无向图,邻接表的顶点vi对应的第i个链表的边结点数目正好是顶点vi的度。
- 对于有向图,邻接表的顶点vi对应的第i个链表的边结点数目仅仅是vi的出度。其入度为邻接表中所有adjvex域值为i的边结点数目。
typedef struct ANode /*弧的结点结构类型*/{int adjvex; /*该弧的终点位置*/struct ANode *nextarc; /*指向下一条弧的指针*/InfeType info; /*该弧的相关信息*/}ArcNode;typedef struct Vnode /*邻接表头结点的类型*/{Vertex data; /*顶点信息*/ArcNode *fristarc; /*指向第一条弧*/}VNode;typedef VNode AdjList[MAXV]; /*AdjList是邻接表类型*/typedef struct {AdjList adjlist; /*邻接表*/int n,e; /*图中顶点数n和边数e*/}ALGraph; /*图的类型*/
由于在有向图的邻接表中只存放了以一个顶点为起点的弧,所以不易找到指向该顶点的弧。为此,可以设计有向图的逆邻接表。所谓逆邻接表,就是在有向图的邻接表中,对每个顶点,链接的是指向该顶点的弧。
- 9.2.2邻接表存储方法
- 9.2.3 十字邻接表存储方法
- 邻接表存储解释
- 邻接表存储图
- 邻接表存储
- 数据结构之图的邻接表存储方法
- 图的邻接表存储
- 邻接表的存储方式
- 图的邻接表存储
- 图的邻接表存储
- 图的存储-邻接表
- 图的邻接表存储
- 图的邻接表存储
- 图的邻接表存储
- 图的邻接表存储
- 使用数组存储邻接表
- 图的邻接表存储
- 图的邻接表存储
- 二分图最大匹配(匈牙利算法)
- 有意思的typedef ------- (typedef int w[10]; typedef w *ww)
- 6:扩展Yii(Yii权威指南)
- 游戏编程入门学习笔记21——网络篇——信息收发
- 版本控制 --- 1. 你干嘛要用Git(单人寂寞版)
- 9.2.2邻接表存储方法
- 软件开发与测试阶段对照图
- Apache2.2配置aspx运行环境
- 利用D3D抓取GPU数据
- django入门笔记10 - contrib
- spring预备知识-设计域模型和服务层
- django入门笔记11 - 中间件(拦截器)
- 9.2.3 十字邻接表存储方法
- Android系统版本SDK_INT与版本对应关系