两点之间的连线java_java计算图两点之间的路径实例代码
java计算图两点之间的路径总结
本文实例为大家分享了java计算图两点之间的所有路径的具体代码,供大家参考,具体内容如下
1.给定图如下:
2.求0到3之间可达的所有路径
这里问题就是关于搜索遍历的问题,但其中需要注意到不能产生回路或环.
算法描述如下:
top_node:当前栈顶元素
adjvex_node;当前top_node已经访问的邻接点
next_node:即将访问的元素(top_node的第adjvex_node个邻接点所对应的元素)
找出所有路径采用的是遍历的方法,以“深度优先”算法为基础。从源点出发,先到源点的第一个邻接点N00,再到N00的第一个邻接点N10,再到N10的第一个邻接点N20...当遍历到目标点时表明找到一条路径。
上述代码的核心数据结构为一个栈,主要步骤:
①源点先入栈,并进行标记
②获取栈顶元素top_node,如果栈顶为终点时,即找到一条路径,栈顶元素top_node出栈,此时adjvex_node=top_node,新的栈顶元素为top_node,否则执行③
③从top_node的所有邻接点中,从adjvex_node为起点,选取下一个邻接点next_node;如果该元素非空,则入栈,使得adjvex_node=-1,(adjvex_node=-1代表top_node的邻接点一个还没有访问)做入栈标记。否则代表没有后续节点了,此时必须出栈栈顶元素,并置adjvex_node为该栈顶元素,并做出栈标记。
④为避免回路,已入栈元素要记录,选取新入栈顶点时应跳过已入栈的顶点,当栈为空时,遍历完成
3.java代码实现
1)图结构
点表
public class Vertex {
//存放点信息
public int data;
//与该点邻接的第一个边节点
public Edge firstEdge;
}
边表(代表与点相连的点的集合)
//边节点
public class Edge {
//对应的点下表
public int vertexId;
//边的权重
public int weight;
//下一个边节点
public Edge next;
//getter and setter自行补充
}
2).算法实现
public class Vertex {
//存放点信息
public int data;
//与该点邻接的第一个边节点
public Edge firstEdge;
}
两点之间的连线java_java计算图两点之间的路径实例代码相关推荐
- 此时不应有java_Java 锁的知识总结及实例代码
这篇文章主要介绍了Java 锁的知识总结及实例代码,需要的朋友可以参考下 java中有哪些锁 在java中锁主要两类:内部锁synchronized和显示锁java.util.concurrent.l ...
- 函数重写 java_java 函数的重载和重写实例代码
在java中多态分为两种编译时多态(重载)和运行时多态(重写),编译时多态又叫前绑定,运行时多态又叫后绑定. 下面用一个例子说明: public class OverloadAndOverwrite ...
- 组合的示例代码 java_java实现Composite组合模式的实例代码
//20210121 写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现组合模式 组合模式核心思想类似文件夹的概念,构件树形结构,树形有叶子结点和文件夹 ...
- js 画两点之间的连线
文章目录 思路描述 根据css3角度旋转 两点之间,利用离散的点,一个一个的拼凑 案例 案例一:CSS3 角度变换 案例二:手动添加两点之间的连线 思路描述 根据css3角度旋转 根据两点,计算出两点 ...
- 在Visio中实现任意两点之间的连线
在Visio中有时候很难实现两点之间的连线,往往连线会胡乱跳转到其他位置,本人在网上查找了各种方法,网上提到最多的方法是取消自动连接,然而本人实验上百次也没什么卵用,连线还是会自动跳转到其他位置.比如 ...
- 使用二阶贝塞尔曲线画出两点之间的连线
使用二阶贝塞尔曲线画出两点之间的连线 二阶贝塞尔曲线公式 控制点的位置 游戏中需要手动生成多个点来连接两个关卡,以达到更加可视化的目的. 最终效果如图: 二阶贝塞尔曲线公式 B(t) = (1-t)2 ...
- 手机端网页中图片之间出现白线的解决方法
手机端网页中图片之间出现白线的解决方法 参考文章: (1)手机端网页中图片之间出现白线的解决方法 (2)https://www.cnblogs.com/syzdidi/p/9686463.html 备 ...
- 关于5G无线网络设备之间的连线总结
5G室分设备之间的连线主要有馈线.网线.光电混合缆.光纤四种: 种类 位置 说明 馈线 连接pRRU和天线 RRU-天线之间一般是RRU-跳线-馈线-跳线-天线:现在一般RRU上塔靠近 ...
- 如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中。bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生
如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中.bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生 ...
最新文章
- SyntaxError: EOL while scanning string literal
- 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了
- 自己写的小程序 deb打包
- 全文搜索引擎选 ElasticSearch 还是 Solr
- JavaEE笔记(五)
- spring service 怎么拿到数据源信息_SSM(SpringMVC + Spring + MyBatis)中各层作用及关系Ⅰ...
- OpenCASCADE:网格之BRepMesh 架构
- Python之List和Tuple类型(入门3)
- 在SQL Server中设置最大并行度的不同方法
- pat上写java程序_如何运行Java程序和设置CLASSPAT
- AMD:40年三个关键词
- 密码编码学与网络安全笔记(第7版)
- Apache jmeter 压测
- c++用键盘按键控制光标移动_如何在Windows10中用键盘控制鼠标光标
- 爬虫爬取豆瓣电影排行,保存到excel和SQLite
- 图片免费压缩在线的方法有哪些
- kml文件转成cvs_KML 转图层 (转换)
- 新手使用Docker教程
- 关于Google账号被封、被下架、提审被拒等原因分析及建议
- 泛微oa流程表单之请假单(判断请假结束时间不能小于等于请假开始时间)