用java建立无向图,然后进行深度和广度遍历,下列的代码怎么改

问题描述

用java建立无向图,然后进行深度和广度遍历,下列的代码怎么改
import java.util.LinkedList;
import java.util.Queue;
class MatrixUDG {
static int vlen;
int elen;
int[][] mMatrix;
char[] mVexs;
private int number = 7;
private boolean[] flag;
int[][] edges;
MatrixUDG(char[] vexs char[][] edges) {
// 初始化""顶点数""和""边数""
int vlen = vexs.length;
int elen = edges.length;
// 初始化""顶点""
mVexs = new char[vlen];
for (int i = 0; i < mVexs.length; i++)
mVexs[i] = vexs[i];
// 初始化""边""
mMatrix = new int[vlen][vlen];
this.edges = new int[vlen][vlen];
for (int i = 0; i < elen; i++) {
// 读取边的起始顶点和结束顶点
int p1 = getPosition(edges[i][0]);
int p2 = getPosition(edges[i][1]);
// mMatrix[p1][p2] = 1;
// mMatrix[p2][p1] = 1;

        this.edges[p1][p2] = 1;        this.edges[p1][p2] = 1;    }    flag = new boolean[vlen];}/* * 返回ch位置 */int getPosition(char ch) {    for (int i = 0; i < mVexs.length; i++)        if (mVexs[i] == ch)            return i;    return -1;}public void print() {    System.out.printf(""Martix Graph:n"");    for (int i = 0; i < mVexs.length; i++) {        for (int j = 0; j < mVexs.length; j++)            System.out.printf(""%d "" mMatrix[i][j]);        System.out.printf(""n"");    }}void DFSTraverse() {    flag = new boolean[number];    for (int i = 0; i < number; i++) {        if (flag[i] == false) {// 当前顶点没有被访问            DFS(i);        }    }}void DFS(int i) {    flag[i] = true;// 第i个顶点被访问    System.out.print(mVexs[i] + "" "");    for (int j = 0; j < number; j++) {        if (flag[j] == false && edges[i][j] == 1) {            DFS(j);        }    }}void BFSTraverse() {    flag = new boolean[number];    Queue<Integer> queue = new LinkedList<Integer>();    for (int i = 0; i < number; i++) {        if (flag[i] == false) {            flag[i] = true;            System.out.print(mVexs[i] + "" "");            queue.add(i);            while (!queue.isEmpty()) {                int j = queue.poll();                for (int k = 0; k < number; k++) {                    if (edges[j][k] == 1 && flag[k] == false) {                        flag[k] = true;                        System.out.print(mVexs[k] + "" "");                        queue.add(k);                    }                }            }        }    }}

}
class Test {
public static void main(String[] args) {
char[] vexs = { 'A' 'B' 'C' 'D' 'E' 'F' 'G' };
char[][] edges = new char[][] { { 'A' 'C' } { 'A' 'D' }
{ 'A' 'F' } { 'B' 'C' } { 'C' 'D' } { 'E' 'G' }
{ 'F' 'G' } };
MatrixUDG t = new MatrixUDG(vexs edges);
t.print(); // 打印图
System.out.println(""图的深度遍历操作:"" + "" "");
t.DFSTraverse();
System.out.println();
System.out.println(""图的广度遍历操作:""+"" "");
t.BFSTraverse();
}
}

解决方案

单步调试下,看看变量是否为null

时间: 2024-11-30 02:24:44

用java建立无向图,然后进行深度和广度遍历,下列的代码怎么改的相关文章

遍历-关于利用java建立四则运算的二叉树

问题描述 关于利用java建立四则运算的二叉树 把如图所示的算式生成图右形式的二叉树 简单来说应该就是利用二叉树表达四则运算 中根遍历的结果就是中缀表达式 先根遍历就是前缀表达式 后根遍历就是后缀表达式 解决方案 后缀是最简单的,遇到数字放入堆栈,遇到运算符,弹出最后两个操作数构造表达式,再把表达式入堆栈.

Java利用序列化实现对象深度clone的方法_java

本文实例讲述了Java利用序列化实现对象深度clone的方法.分享给大家供大家参考.具体实现方法如下: ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(by

vsm-利用java建立VSM模型时,矩阵太大应该怎么办?普通的增大内存都不管用了!!请高手赐教

问题描述 利用java建立VSM模型时,矩阵太大应该怎么办?普通的增大内存都不管用了!!请高手赐教 利用java建立VSM模型时,矩阵太大应该怎么办?普通的增大内存都不管用了!!请高手赐教 解决方案 挖掘机技术哪家强,中国山东找蓝翔 内存不够怎么办,电脑硬盘找办法 解决方案二: 你是在windows开发的吧?windows的JVM有最大内存限制,不同系统不同,单纯修改最大内存 -Xmx是没效果的.具体最大内存大小建议自己测试. 如果是在linux开发,内存不够的情况下,建议用持久化的办法.如何持

java怎样根据开始日期和结束进行模糊查询 求代码

问题描述 java怎样根据开始日期和结束进行模糊查询 求代码 例如下面的: 解决方案 数据库sql语句. SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 1.建立jdbc数据库连接, 2.创建查询语句. 3.输出结果. 解决方案二: 截止日期的天数加1 时分秒取0 解决方案三: 截止日期的天数加1 时分秒取0 解决方案四: 结束日期 格式化成"yyyyMMdd 23:59:59&q

java中二叉树遍历(递归) 程序代码

测试二叉树遍历,递归算法  代码如下 复制代码       public class TestBinaryTree {     public static void main(String[] args) {     Node<String> g = new Node<String>("G", null, null):     Node<String> e = new Node<String>("E", null, n

大数据的深度和广度

要想考察大数据最好同时考察大数据背后的技术.商业和社会维度.从发展成熟度来看,技术维度走的最远.商业维度有所发展但不算全面成熟,社会维度发展最差.所以虽然已经谈了很久大数据,但除了孕育出大数据自身的几个领域比如搜索等,其它领域却并没有从大数据中获得可见的收益.大多时候人们还是处在觉得这里肯定有金子,但需要更多的耐心的状态.这篇文章则尝试对大数据本身的特征做点挖掘,对未来的发展趋势做点预测. 大数据上的深度和广度 如果把大数据对应到海量的数据,那它就是非常含糊的概念,相当于变成信息的同义词,显然也

qq-如何纯java实现类似QQ聊天时候的气泡功能,最好有代码。请给位大神指教

问题描述 如何纯java实现类似QQ聊天时候的气泡功能,最好有代码.请给位大神指教 如何纯java实现类似QQ聊天时候的气泡功能,请给位大神指教一下 解决方案 最近在用Java做一个类似QQ聊天系统 原理:就是给你每次发的消息加一个背景面板panel,每次发送消息,都加载一次,不过这样在聊天框显示比较慢, 暂时我没找到好方法

java定时器 run方法怎么返回值 我要返回result 代码里一直报错 晚生跪求解决

问题描述 java定时器 run方法怎么返回值 我要返回result 代码里一直报错 晚生跪求解决 public VirementResultInfo queryTransaction( final String bank, final TransactionInfo transactionInfo) { // final VirementResultInfo result = null; TimerTask task = new TimerTask() { @Override public v

请问:有谁有用java ee做的教学推荐系统,最好是全的代码,谢谢!

问题描述 请问:有谁有用java ee做的教学推荐系统,最好是全的代码,谢谢! 有谁有用java ee做的教学推荐系统,最好是全的代码 解决方案 你去我要自学网看看. 解决方案二: 你可以百度下 问下度娘 解决方案三: 推荐尚学堂,直接有网盘下载