简单图(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)相关推荐

  1. 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 ...

  2. Atitit. Async await 优缺点 异步编程的原理and实现 java c# php

    Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...

  3. atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js

    atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js 1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释. 1 1.2. 数据库里面的复合变量1 ...

  4. 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. 减少距 ...

  5. java 字节码增强原理_深入浅出Java探针技术1--基于java agent的字节码增强案例

    Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改 ...

  6. java排序算法原理_排序算法原理与实现(java)

    排序算法原理与实现(java) Java程序员必知的8大排序 [来源:本站 | 日期:2012年12月24日 | 浏览173 次] 字体:[大 中 小] 8种排序之间的关系: 1, 直接插入排序 (1 ...

  7. 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 ...

  8. SSL工作原理介绍以及java实现

    SSL工作原理介绍以及java实现 目录 SSL工作原理介绍以及java实现 SSL简介 SSL工作原理 握手协议Handshake protocol 1握手阶段使用RSA加密算法 2握手阶段使用Di ...

  9. BST原理剖析及Java实现

    BST原理剖析及Java实现 BST概念 BST 实现原理 BST 查找原理 BST 插入原理 BST 删除原理 Java实现二叉查找树 BST类 测试 BST 存在的问题 BST概念 二叉查找树(B ...

  10. 图论算法—图的拓扑排序介绍和Kahn算法原理解析以及Java代码的实现

    详细介绍了图的拓扑排序的概念,然后介绍了求拓扑序列的算法:Kahn算法的原理,最后提供了基于邻接矩阵和邻接表的图对该算法的Java实现. 阅读本文需要一定的图的基础,如果对于图不是太明白的可以看看这篇 ...

最新文章

  1. PL/SQL 游标
  2. mysql行级锁实例,PHP – MySQL行级锁定示例
  3. Flutter 系列(一)安装与配置
  4. 23. 进程并发控制之Semaphore
  5. 我的数据分析全系列教程,记录着那些大学奋斗的时光
  6. Java 打印 99 乘法表
  7. php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...
  8. Linux系统通过Squid配置实现代理上网
  9. java 死链检测_网站死链检测工具/网站地图生成工具
  10. 一个周末掌握IT前沿技术之node.js篇一:Node.js与javascript
  11. 宝宝出现这些突发状况!你会处理吗?
  12. k8s安装 从k8s.gcr.io 拉取镜像失败
  13. Web3的先锋兵:虚拟人
  14. (附源码)计算机毕业设计SSM驾考服务系统
  15. html seo设置,搜索引擎优化中的HTML代码优化方法-如何做好SEO
  16. realmeq2可以刷鸿蒙系统吗,realmeQ2Pro有NFC功能吗?可以用realmeQ2Pro刷公交和地铁吗...
  17. java cics通讯,哪种方法可以连接大型机和Java? MQ系列/ IBM CICS事务网关中哪个最好?...
  18. Windows软件打包工具
  19. 声纹识别技术助力远程身份认证
  20. 计算机网络HTTP篇(一)HTTP 常见面试题

热门文章

  1. 网易微专业——Java Web开发工程师学习笔记(1):HTTP
  2. 外卖小程序源码java后台_扫码点餐系统小程序源码搭建开发
  3. 测试—分类【修改版】
  4. ROS学习笔记六:action-server/action-client
  5. Navicat 压缩包免费下载
  6. 手机升级系统如何找回丢失的文件
  7. 3G、4G移动数据网络业务流程
  8. julia java_Julia和Java性能比较
  9. 查看Win10序列号
  10. powerBI使用概览