图的存储(Java)以及遍历
// 深搜
private void dfs(int v) {
visited[v] = true;
System.out.print(v+" ");
for (int i = 0; i <G.get(v).size(); i++) {
//递归调用搜索没有被访问过的当前节点的下一个节点(邻接点)
int k=G.get(v).get(i);
if (!visited[k])
dfs(k);
}
}
//广搜
private void bfs(int v) {
//队列用来保存被访问节点的分支节点(邻接点)
Queue<Integer> que = new LinkedList<Integer>();
que.offer(v);
while (!que.isEmpty()) {
v = que.poll();
System.out.print(v+" ");
visited[v] = true;
//将被访问节点的分支节点(邻接点)加入到队列中
for (int i = 0; i <G.get(v).size(); i++) {
int k=G.get(v).get(i);
if (!visited[k]){
que.add(k);
visited[k] = true;
}
}
public class ALGraph implements IGraph{
//图的邻接表类的描述
private GraphKind kind;
private int vexNum,arcNum;
private VNode[] vexs;
public void createGraph() {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入图的类型");
GraphKind kind =GraphKind.valueOf(sc.next());
switch(kind)
{
case UDG:
createUDG();
break;
case DG:
createDG();
break;
case UDN:
createUDN();
break;
case DN:
createDN();
break;
}
}
private void createDN() {
// TODO Auto-generated method stub
//创建有向网
Scanner sc=new Scanner(System.in);
System.out.println("下面要创建带权的有向图(有向网)。请分别输入图的顶点数、图的边数");
vexNum=sc.nextInt();
arcNum=sc.nextInt();
vexs=new VNode[vexNum];
System.out.println("请分别输入图的各顶点");
for(int v=0;v<vexNum;v++)
vexs[v]=new VNode(sc.next());
System.out.println("请输入各边的顶点及其权值:");
for(int k=0;k<arcNum;k++)
{
int v=locateVex(sc.next());//弧尾
int u=locateVex(sc.next());//弧头
int value=sc.nextInt();
addArc(v,u,value);
}
for(VNode v:vexs)
System.out.print(v.getData()+" ");
}
//在图中插入边(或弧)节点,图右顶点集合边集组成,因此创建图必须先建立图的顶点集合边集
private void addArc(int v, int u, int value) {
// TODO Auto-generated method stub
ArcNode arc = new ArcNode(u,value);
arc.setNextArc(vexs[v].getFirstArc());
vexs[v].setFirstArc(arc);
}
//图的邻接表表示中的顶点节点类
public class VNode { private Object data;// 顶点信息
private ArcNode firstArc; //指向第一条依附于该顶点的弧
} //图的邻接表表示中 边结点 类
public class ArcNode {
private int adjVex;//该弧所指向的顶点位置
private int value;//边或弧的权值
private ArcNode nextArc;//指向下一条弧
}
图的存储(Java)以及遍历的更多相关文章
- 【algo&ds】6.图及其存储结构、遍历
1.什么是图 图表示"多对多"的关系 包含 一组顶点:通常用 V(Vertex)表示顶点集合 一组边:通常用 E(Edge)表示边的集合 边是顶点对:(v,w)∈ E,其中 v,w ...
- 图的存储,搜索,遍历,广度优先算法和深度优先算法,最小生成树-Java实现
1)用邻接矩阵方式进行图的存储.如果一个图有n个节点,则可以用n*n的二维数组来存储图中的各个节点关系. 对上面图中各个节点分别编号,ABCDEF分别设置为012345.那么AB AC AD 关系可以 ...
- 图的存储及遍历 深度遍历和广度遍历 C++代码实现
/*图的存储及遍历*/ #include<iostream> using namespace std; //----------------------------------- //邻接 ...
- Java基础知识强化之集合框架笔记39:Set集合之HashSet存储字符串并遍历
1. HashSet类的概述: (1)不保证set的迭代顺序 (2)特别是它不保证该顺序恒久不变 HashSet底层数据结构是哈希表,哈希表依赖于哈希值存储,通过哈希值来确定元素的位置, 而保证元素 ...
- Java基础知识强化之集合框架笔记14:List集合存储字符串并遍历
1. List集合存储学生对象并遍历: 需求:存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)添加字符串对象到集合中 (4)遍历集合 2. 代码示例: package cn. ...
- Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历
1. Collection集合存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)把字符串对象添加到集合中 (4)遍历集合 2. 代码示例: package cn.itcast ...
- C++编程练习(9)----“图的存储结构以及图的遍历“(邻接矩阵、深度优先遍历、广度优先遍历)
图的存储结构 1)邻接矩阵 用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中边或弧的信息. 2)邻接表 3)十字链表 4)邻接多重表 5)边集数组 本文只用代码实现用 ...
- 【lhyaaa】图的存储&遍历
呀,图真是一个令人头疼而又很重要的东西.在现实生活中,我们有很多的问题都不能用树来实现,所以烦人啊不伟大的图就出现了—— 图的存储 没有存储哪来的操作,所以存储是最基础的呢. 邻接矩阵 我们对于图的存 ...
- 图的存储与遍历C++实现
1.图的存储 设点数为n,边数为m 1.1.二维数组 方法:使用一个二维数组 adj 来存边,其中 adj[u][v] 为 1 表示存在 u到 v的边,为 0 表示不存在.如果是带边权的图,可以在 a ...
- 数据结构作业——图的存储及遍历(邻接矩阵、邻接表+DFS递归、非递归+BFS)
邻接矩阵存图 /* * @Author: WZY * @School: HPU * @Date: 2018-11-02 18:35:27 * @Last Modified by: WZY * @Las ...
随机推荐
- WSL2学习和使用汇集
接触WSL2过程中整理沉淀的一些知识点,大纲如下,内容比较多,详细内容参考https://www.yuque.com/wushifengcn/kb/mbg1b5 欢迎感兴趣者补充和提出问题,共同学习. ...
- Java测试开发--Spring Tools Suite (STS) 简介(一)
sts是一个定制版的Eclipse,专为Spring开发定制的,方便创建调试运行维护Spring应用. 官网下载之后,可以看到一个sts-bundle,里面有三个文件夹,一个法律信息,一个tc Ser ...
- SpringBoot 整合 Docker
最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记 1. Demo Project 首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行 1.1 接 ...
- 2021 祥云杯 wp
52 web ezyii https://pan.baidu.com/s/1j7IJm9xiea5FvBhPMkPNoQ 提取码GAME <?php include("closure/ ...
- js 正则表达式 验证与限制
.... //验证身份证格式 function onIDCardsValidation(e) { if (e.isValid) { var pattern = /\d*/; if (!(e.value ...
- SQL Server学习之路:建立数据库、建立表
1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Management Studio(以下简称SSMS).本系 ...
- [atAGC106F]Figures
考虑purfer序列,若生成树的pufer序列为$p_{i}$,则答案为$(\prod_{i=1}^{n}a_{i})\sum_{p}\prod_{i=1}^{n}\frac{(a_{i}-1)!}{ ...
- MS17-010漏洞利用
MS17-010漏洞利用 1.安装虚拟机win7 x64,实现利用ms17-010实现对其win7 x64主机开始渗透,查看该主机信息,打开远程桌面,抓取用户名和密码并破译,创建一个 : 学号.txt ...
- java 必应壁纸批量下载
基于java 必应壁纸批量下载 - rookie丶k - 博客园 (cnblogs.com)实现 上面代码运行本地有点小问题,改了改 1.ssl验证 2.请求头 3.需要优化下载速度,多线程方式(还不 ...
- 强化学习之MountainCarContinuous(注册自己的gym环境)
目录 1. 问题概述 2. 环境 2.1 Observation & state 2.2 Actions 2.3 Reward 2.4 初始状态 2.5 终止状态- Episode Termi ...