图 - 存储结构之邻接表
对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的。因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即数组与链表相结合的存储方法。
邻接表的处理方法是这样的。
1、图中顶点用一个一维数组存储,另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。
2、图中每个顶点vi的所有邻接点构成一个线性表,由于邻接点的个数不定,所以用单链表存储,无向图称为顶点vi的边表,有向图称为顶点vi作为弧尾的出边表。
例如图7-4-6就是一个无向图的邻接表结构。
若是有向图,邻接表的结构是类似的,如图7-4-7,以顶点作为弧尾来存储边表容易得到每个顶点的出度,而以顶点为弧头的表容易得到顶点的入度,即逆邻接表。
对于带权值的网图,可以在边表结点定义中再增加一个weight的数据域,存储权值信息即可,如图7-4-8所示。
下面示例无向图的邻接表创建:(改编自《大话数据结构》)
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#include<iostream> using namespace std; #define MAXVEX 100 /* 最大顶点数,应由用户定义 */ typedef struct EdgeNode/* 边表结点 */ typedef struct VextexNode/* 顶点表结点 */ typedef struct void CreateALGraph(GraphAdjList *Gp) for (i = 0 ; i < Gp->numNodes; i++) for (k = 0; k < Gp->numEdges; k++)/* 建立边表 */ pe = (EdgeNode *)malloc(sizeof(EdgeNode)); } int main(void) return 0; |
这里的邻接点插入使用了单链表创建中的头插法,对于无向图来说,一条边对应都是两个顶点,所以在循环中,一次就针对i和j分别进行了插入。
转载于:https://www.cnblogs.com/alantu2018/p/8471706.html
图 - 存储结构之邻接表相关推荐
- 数据结构之图的存储结构:邻接表法
图的存储结构:邻接表法 产生条件: 邻接表法的定义: 邻接表法的特点: 邻接表法的代码定义: 邻接表法与邻接矩阵法的对比: 产生条件: 当用邻接矩阵存储时:空间复杂度为O(|v|^2),太大 邻接表法 ...
- 图的存储结构之邻接表(详解)
之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M.对于稀疏图来说,M要远远小于N2.先上数据,如下. 1 2 3 ...
- 图的存储结构之邻接表
什么是邻接表? 邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法. 对于图G中的每个顶点Vi,将所有邻接于Vi的顶点Vj链成一个单链表,这个单链表就称为顶点Vi的邻接表 ...
- 数据结构之图的存储结构:邻接多重表
图的存储结构:邻接多重表 产生条件: 邻接多重表的定义: 邻接多重表的代码定义: 删除: 性能分析: 十字链表与邻接多重表的对比 产生条件: 当用邻接矩阵法存储时:空间复杂度为O(|V|^2),太大 ...
- 实现图的邻接矩阵和邻接表存储
/** * 实验题目: * 实现图的邻接矩阵和邻接表存储 * 实验目的: * 领会图的两种主要存储结构和图基本运算算法设计 * 实验内容: * ...
- 数据结构——图——存储结构——邻边表
数据结构--图--存储结构--邻边表 邻接表的处理办法 1.图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便.另外,对于顶点数组中,每个数据元素还 ...
- 实现图的邻接矩阵和邻接表的存储
十五,实现图的邻接矩阵和邻接表的存储 #include<stdio.h> #include<stdlib.h> #define max 100 #define INF 3276 ...
- 图很难理解?看这篇图论基础与图存储结构就够了
点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 作者 | 程序员吴师兄 转载自五分钟学算法(ID:CXYxiaowu) 1 前言 打算先普及一下图的相关理论支 ...
- 【数据结构与算法】图论基础与图存储结构
前言 由于后续更新好几篇文章都涉及到 图 这种数据结构,因此打算先普及一下 图 的相关理论支持,如果后面的相关内容有些点不太容易理解,可以查阅此篇文章.本文不建议一口气阅读完毕,可以先浏览一遍,在后续 ...
最新文章
- python3.7.4安装教程桌面_Python 3.7.4 for Windows的安装
- 去除链接虚线边框css
- orion算法被解密了
- P4390 [BOI2007]Mokia 摩基亚 (CDQ解决三维偏序问题)
- LINQ学习(四):From子句
- 一个非常实用的 div+css 实现的导航条
- python里default_新手对python default不是很理解它有什么用途
- python包裹和运费_这个Python库真的太好用了,10行代码就能轻松搞定目标检测
- 七夕出手,这本情话秘籍请收好
- 全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
- 如何给网站添加CNZZ站长统计功能代码的常用办法
- 为什么python文件用cmd老是出现语法错误_关于Python的py文件在Python自带的shell编辑器中运行成功,用cmd打开运行却出错 在cmd下运行结果...
- 阿里云上实现DDNS公网解析
- 极光笔记 | 极光推送业务无中断迁移上云实践
- Flash游戏教程:控制物体运动三法
- html图片左右滚动播放,CSS3实现横向滚动播放
- [AHK]鼠标滚轮音量调节
- Day 07 类、魔方方法
- 使用LocalDate获取本周周一和周日
- 大鱼吃小鱼游戏代码 基于java-swing