简单图(simple graph)原理及实现(Java)
简单图(simple graph):既不包含平行边,也没有自环的图。
Operation
Graph(int v); // Create empty graph with v verticespublic void addEdge(int v, int w); // add an edge v-wIterable<Integer> adj(int v); // vertices adjacent to vpublic int V(); // number of verticespublic int E(); // number of edges
底层实现
使用邻接List存放与各个顶点邻接的点。
java代码
import java.util.ArrayList;
import java.util.List;public class Graph {/* 无向、无权图*/private List<Integer>[] ver;Graph(int v) {/* Create empty graph with v vertices*/ver = new List[v];}public void addEdge(int v, int w) {/* add an edge v-w*/if (ver[v] == null) {ver[v] = new ArrayList<>();}if (ver[w] == null) {ver[w] = new ArrayList<>();}ver[v].add(w);ver[w].add(v);}Iterable<Integer> adj(int v) {/* vertices adjacent to v*/return ver[v];}public int V() {/* number of vertices*/return ver.length;}public int E() {/* number of edges*/int res = 0;for (int i = 0; i < ver.length; i++) {res += ver[i].size();}return res / 2;}public static void main(String[] args) {Graph test = new Graph(5);test.addEdge(0, 1);test.addEdge(1, 2);test.addEdge(2, 3);test.addEdge(3, 4);test.addEdge(4, 1);test.addEdge(4, 0);for (int i = 0; i < test.V(); i++) {System.out.println("和" + i + "邻接的顶点为:" + test.adj(i));}System.out.println("顶点的数量:" + test.V()); // 顶点的数量应该为5System.out.println("边的的数量:" + test.E()); // 边的数量应该为6}
}
To be a sailor of the world bound for all ports.
简单图(simple graph)原理及实现(Java)相关推荐
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++ 1. 查找nas的原理1 2. 与dlna的关系1 3. 与ssdp的关系1 4. Cling - Ja ...
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js 1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释. 1 1.2. 数据库里面的复合变量1 ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- java 字节码增强原理_深入浅出Java探针技术1--基于java agent的字节码增强案例
Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改 ...
- java排序算法原理_排序算法原理与实现(java)
排序算法原理与实现(java) Java程序员必知的8大排序 [来源:本站 | 日期:2012年12月24日 | 浏览173 次] 字体:[大 中 小] 8种排序之间的关系: 1, 直接插入排序 (1 ...
- Java解析SQL生成语法树_Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python...
Atitit.sql ast 表达式 语法树 语法 解析原理与实现java php c#.net js python 1.1.Sql语法树ast如下图锁死 2.SQL语句解析的思路和过程 2.1.le ...
- SSL工作原理介绍以及java实现
SSL工作原理介绍以及java实现 目录 SSL工作原理介绍以及java实现 SSL简介 SSL工作原理 握手协议Handshake protocol 1握手阶段使用RSA加密算法 2握手阶段使用Di ...
- BST原理剖析及Java实现
BST原理剖析及Java实现 BST概念 BST 实现原理 BST 查找原理 BST 插入原理 BST 删除原理 Java实现二叉查找树 BST类 测试 BST 存在的问题 BST概念 二叉查找树(B ...
- 图论算法—图的拓扑排序介绍和Kahn算法原理解析以及Java代码的实现
详细介绍了图的拓扑排序的概念,然后介绍了求拓扑序列的算法:Kahn算法的原理,最后提供了基于邻接矩阵和邻接表的图对该算法的Java实现. 阅读本文需要一定的图的基础,如果对于图不是太明白的可以看看这篇 ...
最新文章
- PL/SQL 游标
- mysql行级锁实例,PHP – MySQL行级锁定示例
- Flutter 系列(一)安装与配置
- 23. 进程并发控制之Semaphore
- 我的数据分析全系列教程,记录着那些大学奋斗的时光
- Java 打印 99 乘法表
- php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...
- Linux系统通过Squid配置实现代理上网
- java 死链检测_网站死链检测工具/网站地图生成工具
- 一个周末掌握IT前沿技术之node.js篇一:Node.js与javascript
- 宝宝出现这些突发状况!你会处理吗?
- k8s安装 从k8s.gcr.io 拉取镜像失败
- Web3的先锋兵:虚拟人
- (附源码)计算机毕业设计SSM驾考服务系统
- html seo设置,搜索引擎优化中的HTML代码优化方法-如何做好SEO
- realmeq2可以刷鸿蒙系统吗,realmeQ2Pro有NFC功能吗?可以用realmeQ2Pro刷公交和地铁吗...
- java cics通讯,哪种方法可以连接大型机和Java? MQ系列/ IBM CICS事务网关中哪个最好?...
- Windows软件打包工具
- 声纹识别技术助力远程身份认证
- 计算机网络HTTP篇(一)HTTP 常见面试题