采用邻接矩阵表示法创建无向图-Java代码实现

实现步骤

1、首先定义两个全局变量一维数组vextex二维数组arcs,vextex用来保存所有的顶点,arcs表示邻接矩阵,private String[] vextex;private int[][] arcs;
2、由方法**LocateVertex(String value)**找到value在图中的位置,即value在一维数组vextex中的序号。
3、在插入方法中传入两个顶点和相应的权值insertUDN(String v1,String v2,int weight),在方法中调用LocateVertex(String value)则能得到两个顶点在图中的位置。

代码
package com.liwei.datastruct;


import java.lang.reflect.Array;
import java.util.Arrays;

//创建一个无向网
public class CreateUDN {

    private String[] vextex; //保存所有的顶点

    private int[][] arcs; // 生成的无向网保存在二维数组中


    public static void main(String[] args) {

        String[] vextex = {"A","B","C","D","E"};

        CreateUDN createUDN = new CreateUDN(5,vextex);

        createUDN.insertUDN("A","B",1);
        createUDN.insertUDN("A","C",1);
        createUDN.insertUDN("B","C",1);
        createUDN.insertUDN("B","D",1);
        createUDN.insertUDN("B","E",1);
        createUDN.Show();


    }


    //初始化 n为顶点个数, vextex为传入顶点向量
    public CreateUDN(int n,String[] vextex){
        arcs = new int[n][n];
        this.vextex=vextex;
    }

    // 将两个顶点和弧插入对应的图中
    public int[][] insertUDN(String v1,String v2,int weight){
        //分别找出v1,v2在图中对应的位置
        int M = LocateVertex(v1);
        int N = LocateVertex(v2);
        
        //由于是无向图,则双向赋相同值,如果的有向图则是单向
        arcs[M][N] = weight;
        arcs[N][M] = weight;
        return arcs;
    }

    //找到当前两个顶点和弧的位置
    public  int LocateVertex(String value){
        int vexnum = vextex.length;
        int i = 0;
        for (int j = 0; j <vexnum; j++) {
            if (vextex[j].equals(value)){
                i = j ;
                break;
            }
        }
        return i;
    }
    
    // 输出最后生成的无向网(邻接矩阵)
    public void Show(){
        for (int[] arc : arcs) {
            System.out.println(Arrays.toString(arc));
        }

    }
}

测试数据

在这里插入图片描述

输出结果

在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值