有向图的邻接矩阵表示法(创建,DFS,BFS)
package shiyan; import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner; public class GraphMartix { class Vertext<AnyType>{
char data;
boolean visit;
public Vertext(char d){
this.data=d;
this.visit=false;
}
} Vertext ver[];
int arcs[][];
int verNumble;
//创建图
Scanner sc=new Scanner(System.in); public void creatGraph(){
System.out.println("请输入顶点个数");
verNumble=sc.nextInt();
ver=new Vertext[verNumble];
arcs=new int[verNumble][verNumble];
for(int i=0;i<verNumble;i++){
for(int j=0;j<verNumble;j++){
arcs[i][j]=0;
}
}
System.out.println("请输入顶点数据");
String point=sc.next();
char p[]=point.toCharArray();
for(int i=0;i<p.length;i++){
ver[i]=new Vertext(p[i]);
}
for(int i=0;i<verNumble;i++){
System.out.println("请输入 所有的以"+ver[i].data+"为弧尾的边上的另一端点顶点");
String apoint=sc.next();
char ap[]=apoint.toCharArray();
int ap_id[]=new int[ap.length]; //存放邻接点下标
if(ap[0]=='*')
ap_id[0]=-1;
else{
for(int x=0;x<ap.length;x++){
int y=0;
while(ver[y].data!=ap[x]&&y<ver.length){
y++;
}
ap_id[x]=y;
}
}
if(ap_id[0]==-1)
continue;
for(int j=0;j<ap_id.length;j++){
arcs[i][ap_id[j]]=1;
}
}
} public void DFS(int v){
ver[v].visit=true;
System.out.println(ver[v].data);
for(int i=0;i<ver.length;i++){
if(arcs[v][i]==1&&ver[i].visit==false)
DFS(i);
}
}
public void BFS(int v){
Queue<Integer> q=new LinkedList<Integer>();
q.add(v);
while(!q.isEmpty()){
v=q.poll();
if(ver[v].visit==false){
ver[v].visit=true;
System.out.println(ver[v].data);
}
for(int i=0;i<ver.length;i++){
if(arcs[v][i]==1&&ver[i].visit==false){
q.add(i);
}
}
}
}
public void du(){
int chu=0;
int ru=0;
for(int i=0;i<ver.length;i++){
for(int j=0;j<ver.length;j++){
if(arcs[i][j]==1)
chu++;
if(arcs[j][i]==1)
ru++;
} System.out.println(ver[i].data+"的度为: "+(chu+ru));
chu=0;
ru=0;
}
} public static void main(String[] args) {
GraphMartix gm=new GraphMartix();
gm.creatGraph();
gm.du();
// gm.DFS(0);
gm.BFS(0); } }
有向图的邻接矩阵表示法(创建,DFS,BFS)的更多相关文章
- PTA 7-1 邻接矩阵表示法创建无向图 (20分)
PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶 ...
- DFS&&BFS
DFS DFS搜索是按照深度的方向搜索,它类似于树的先根遍历,是树的先根遍历的推广. 1.从图的某个顶点v0出发,首先访问v0, 2.找出刚访问过的顶点的第一个未被访问过的邻接点,然后访问该结点,以该 ...
- DFS & BFS
DFS 深度优先 BFS 广度优先 DFS或者BFS都是在联通区域内遍历节点的方法 用在二叉树上DFS有preOreder,inOrder,postOrder,BFS就是层次遍历. 在二叉树上的节点, ...
- 图的建立——邻接矩阵表示(C语言+VC6.0平台)
图的邻接矩阵表示及其建立(无向图) #include <stdio.h> #include <stdlib.h> typedef char VertexType; ...
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...
- ID(dfs+bfs)-hdu-4127-Flood-it!
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ...
- 基于visual Studio2013解决算法导论之054图的邻接矩阵表示
题目 图的邻接矩阵表示 解决代码及点评 // 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <l ...
- c语言——单链表分拆——头插法创建链表,尾插法生成链表
#if 1 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; ...
随机推荐
- Python基础 - 关键字
前言 与C一样,python也有自己的关键字,关键字有特殊的意义,不能作为普通的变量名类名等用途 关键字列表 以python2.7.5为例,有如下关键字: and del from not while ...
- Hadoop Hive与Hbase关系 整合
用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...
- hdu3038(并查集)
题目链接 题意:有n次询问,给出a到b区间的总和,问这n次给出的总和中有几次是和前面已近给出的是矛盾的 分析:sum数组维护着到根节点的距离(即区间和),每次合并x,y,s(a,b分别为x,y的根节点 ...
- mysql 编译安装提示“checking for termcap functions library... configure: error: No curses/termcap library found”
原因: 缺少ncurses安装包 解决办法: 下载安装相应软件包 一.如果你的系统是RedHat系列: yum list|grep ncurses yum -y install ncurses-dev ...
- hdu2126(求方案数的01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2126 题意: n个物品,m元钱,每个物品最多买一次,问最多可以买几件物品,并且输出方案数. 分析:一看 ...
- 通过HttpURLConnection模拟post表单提交
通过HttpURLConnection模拟post表单提交 package junit; import java.io.InputStream; import java.net.HttpURLConn ...
- 站点接入QQ登录
首先引入授权js文件 <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/op ...
- Visual Studio Code中配置GO开发环境
在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...
- windows phone 独立存储空间的操作 (2)
原文:windows phone 独立存储空间的操作 (2) IsolatedStorage独立存储空间是保存应用程序的一些数据已经配置文件,独立存储空间相对于其他的wp程序是独立的,也就是说每个wp ...
- php按照奖品百分比随机抽奖代码分析
这个忘记从哪里copy过来了 /** * 概率算法 * @param array $probability * @return integer|string */ function get_rand( ...