邻接表(Adjacency List)
邻接表的特点:
1、n个顶点、e条边的无向图的存储空间是n+2e
2、无向图顶点的度是第i个单链表上结点的个数
3、邻接表适用于稀疏图
4、如果要判断任意两顶点是否有边或弧,需要搜索所有的边链表
邻接表的属性
public static final int INF = 32768; // 极大值
public static final int MAX_VERTEX_NUM = 20; // 最大顶点数
public static int VEXNUM; // 顶点的个数
public static int ARCNUM; // 边的个数
public static VexNode[] vexs; // 顶点集合class VexNode { // 顶点结点String data; // 顶点名称ArcNode firstarc; // 边集合的指针
}class ArcNode { // 边结点String adjvex; // 边的邻接顶点int info; // 权值信息ArcNode nextarc; // 边结点的指针
}
创建一个有向图
public void CreateGraph(){ // 创建一个有向图Scanner sc = new Scanner(System.in);System.out.print("请输入顶点的个数:");VEXNUM = sc.nextInt(); // 输入顶点的个数System.out.print("请输入边的个数:");ARCNUM = sc.nextInt(); // 输入边的个数// 初始化顶点集合vexs = new VexNode[VEXNUM];System.out.print("请输入顶点:");for (int i = 0; i < VEXNUM; i++) {vexs[i] = new VexNode(sc.next(), null);}// 初始化边集合for (int i = 0; i < ARCNUM; i++) {System.out.print("请输入(v1,v2):");String v1 = sc.next();String v2 = sc.next();int x1 = Locate(v1);System.out.printf("请输入(%s, %s)的权值:", v1, v2);int info = sc.nextInt(); // 边权值信息ArcNode arcNode = new ArcNode(v2, info, vexs[x1].firstarc); // 创建新的结点并连接到邻接表vexs[x1].firstarc = arcNode;}}
定位顶点v0的位置
// 定位v0所在集合的位置public int Locate(String v0) {for (int i = 0; i < VEXNUM; i++) {if (v0.equals(vexs[i].data)){return i;}}return -1;}
邻接表(Adjacency List)相关推荐
- 图(一)之邻接表Adjacency List
开始攻克图的算法,先从最简单的存储开始实现,本文关于邻接表的实现. 邻接表是图的存储中最简单也是最基本的存储结构,基于链表的思想实现的.在邻接表中,对于中的每个顶点建立一个单链表,第i个单链表中的节点 ...
- MySQL—通过Adjacency List(邻接表)存储树形结构
转载自:Mysql通过Adjacency List(邻接表)存储树形结构 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢?像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数 ...
- (数据结构)无向图的邻接多重表(Adjacency Multilist)表示
邻接多重表(Adjacency Multilist)是无向图的另一种链式存储结构 图的邻接表(Adjacency List)表示 有向图的十字链表(Orthogonal List)表示 我们在使用邻接 ...
- 【转载】邻接表表示法
图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点v i ,该方法把所有邻接于v i 的顶点v j 链成一个带头 结点的单链表,这个单链表就称为顶点v i 的邻接表(Ad ...
- 有向图的邻接表表示法
图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List). 1. ...
- 有向图的邻接表描述 c++
有向图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency ...
- 图 邻接表 建立 深度遍历 广度遍历
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 图的邻接 ...
- 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构|图的邻接表与深度、广度优先搜索
线性存储元素时,元素的关系也同时确定了.而非线性数据结构就不同了,需要同时考虑存储数据元素和数据元素的关系. 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位 ...
- 使用邻接表创建无向图和有向图
图的邻接表表示法: 邻接表(Adjacency List) 是图的 一 种链式存储结构.在邻接表中,对图中每个顶点V建立一个单链表,把与 V相邻接的顶点放在这个链表中.邻接表中每个单链表的第一个结点存 ...
- 【图】什么是图?无向图怎么存储?邻接表和邻接矩阵如何用代码存储图?
目录 一.概念 图是什么 各种图的定义 二.图的存储结构 邻接矩阵 邻接表 三.代码实现图的存储 1.无向图存储 2.邻接矩阵存储图 核心代码 完整代码 3.邻接表存储有向图(不含权重) 核心代码 完 ...
最新文章
- ORACLE 数据的逻辑组成
- Linux下覆盖目录的方法
- java 革命_JAVA数据库连接池的革命 -- 从BoneCP到HikariCP(转)
- Ubuntu 12.04 root用户登录设置
- remote: Incorrect username or password ( access token )
- RabbitMQ生产者和消费者Java实现
- 用代码复杂度分析风险
- Python数据结构实战——哈希表(HashTable)
- 《语音识别技术》.ppt
- Debian系统关闭iptables的conntrack跟踪
- 敏捷开发宣言 (一)
- 解决nginx服务器显示txt文本为乱码的问题
- 刀片服务器显示如何切换,刀片机服务器切换
- PHP-基于ipip.net制作的IP查询接口源码
- Python-Cartopy制图学习02-中国2010年5月干旱情况空间制图
- Php—— 1.apache2.4.x+php7.x
- 第二工业大学计算机应用大专录取分,上海第二工业大学2017年分省分专业录取分数线...
- 大数据日志分析Hadoop项目实战
- 基于java的志愿信息管理系统_基于jsp的志愿者管理系统-JavaEE实现志愿者管理系统 - java项目源码...
- 八月十一上午笔记钊哥第一节课
热门文章
- 麻瓜编程python爬虫微专业_网易微专业Python Web开发工程师课程下载
- 高德地图大头针功能_有关于高德地图的大头针下落动画。还有就是高德地图的设置...
- 计算机无法接入工作网络,局域网中电脑无法连接网络怎么处理
- 1020寒星孤月-蛇形矩阵
- Image-Guided Navigation of a Robotic Ultrasound Probe for Autonomous Spinal Sonography Using a
- 兼容微信字体变大,页面错乱问题
- 大鱼吃小鱼java程序设计
- python来爬取煎蛋网随手拍小姐姐图片
- 笔记本使用HDMI连接显示器没反应
- 程序员谨防加班猝死的十大建议