当前位置: 首页 > news >正文

算法-数据结构-图的构建(邻接矩阵表示)

数据定义


//邻接矩阵表示图
//1.无向图是对称的
//2.有权的把a,到b 对应的位置换成权的值

/**
 * 无向图
 *    A  B
 * A  0  1
 * B  1  0
 */
/**
 * 有向图
 *    A  B
 * A  0  1
 * B  0  0
 */

import java.util.ArrayList;
import java.util.List;

/**
 * 带权图
 *    A  B
 * A  0  1
 * B  0  0
 */
public class GraphM {
    GraphM(List<Character> vList, int [][] gArr){
        v=vList;
        //构造时候顶点个数代表邻接矩阵的长度
        //邻接矩阵存储边是否联通和权
        g=gArr;
    }
    //顶点
    private List<Character> v=new ArrayList<>();
    //边
    private int[][] g;

    public List<Character> getV() {
        return v;
    }

    public int[][] getG() {
        return g;
    }
}

图的创建



import org.springframework.integration.graph.Graph;

import java.util.ArrayList;
import java.util.List;

public class GraphTest {
    //创造一个无向图 边长为6 都联通
    //顶点为6

    public static void wuXiangGraphCreat()
    {
        List<Character> v1=new ArrayList<>();
        for(int i=0;i<6;i++)
        {
            v1.add((char)('A'+i));
        }
        int [][] g1=new int[v1.size()][v1.size()];
        for(int i=0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                if(i!=j)
                {
                    //不是对称轴上都是1
                    g1[i][j]=1;
                }else {
                    //对称轴都是0
                    g1[i][j]=0;
                }
            }
        }
        GraphM wuXiangGraph=new GraphM(v1,g1);
        //打印校验
        //顶点
        System.out.println(wuXiangGraph.getV());
        //边
        for(int i= 0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                System.out.print(wuXiangGraph.getG()[i][j]);
                System.out.print(" ");
            }
            System.out.println();
        }
    }
    //有向图
    //创造一个有向图 边长为6 A-B B-C C-D D_E E-F
    //顶点为6
    public static void youXiangGraphCreat()
    {
        List<Character> v1=new ArrayList<>();
        for(int i=0;i<6;i++)
        {
            v1.add((char)('A'+i));
        }
        int [][] g1=new int[v1.size()][v1.size()];

        for(int i=0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                if(i==0&&j==1||i==1&&j==2||i==2&&j==3|| i==3&&j==4||i==4&&j==5||
                i==5&&j==0)
                {
                    //边长为6 A-B B-C C-D D_E E-F
                    g1[i][j]=1;
                }else {
                    //其余都是0
                    g1[i][j]=0;
                }
            }
        }
        GraphM wuXiangGraph=new GraphM(v1,g1);
        //打印校验
        //顶点
        System.out.println(wuXiangGraph.getV());
        //边
        for(int i= 0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                System.out.print(wuXiangGraph.getG()[i][j]);
                System.out.print(" ");
            }
            System.out.println();
        }
    }
    //有向图带权,权每到下一条边加10
    //创造一个有向图 边长为6 A-B B-C C-D D_E E-F
    public static void youXiangGraphQuCreat()
    {
        List<Character> v1=new ArrayList<>();
        for(int i=0;i<6;i++)
        {
            v1.add((char)('A'+i));
        }
        int [][] g1=new int[v1.size()][v1.size()];
        //权
        int tem=0;
        for(int i=0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                if(i==0&&j==1||i==1&&j==2||i==2&&j==3|| i==3&&j==4||i==4&&j==5||
                        i==5&&j==0)
                {
                    //边长为6 A-B B-C C-D D_E E-F
                    g1[i][j]=1+tem;
                    tem+=10;
                }else {
                    //其余都是0
                    g1[i][j]=0;
                }
            }
        }
        GraphM wuXiangGraph=new GraphM(v1,g1);
        //打印校验
        //顶点
        System.out.println(wuXiangGraph.getV());
        //边
        for(int i= 0;i<v1.size();i++)
        {
            for(int j=0;j<v1.size();j++)
            {
                System.out.print(wuXiangGraph.getG()[i][j]);
                System.out.print(" ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        //无向图
        wuXiangGraphCreat();
        youXiangGraphCreat();
        youXiangGraphQuCreat();
    }


}

结果打印

http://www.dtcms.com/a/35284.html

相关文章:

  • 图数据库Neo4j面试内容整理-约束(Constraint)
  • C++面向对象编程技术研究
  • 6.1 - UART串口数据收发环回实验
  • 代码随想录第三十八天| 322. 零钱兑换 279.完全平方数 139.单词拆分 动态规划:关于多重背包,你该了解这些!
  • 布隆过滤器:一种简单而高效的集合查询方法
  • git中,如何查看具体单个文件的log
  • 3dtiles平移旋转工具制作
  • 今日运维之-Mac笔记本python环境问题
  • FFmpeg视频处理入门级教程
  • 汇编语言 第九章-转移指令的原理
  • Python GUI
  • OpenCV给图像添加噪声
  • 每日一题之铠甲合体
  • 代码随想录day21
  • 哈希表的复习
  • 25全国各省自考报名时间汇总⏰照片要求✅
  • 【附源码】基于opencv+pyqt5搭建的人脸识别系统
  • Golang 构建学习
  • 涉密载体管控系统革新:RFID技术引领,信息安全新境界
  • 《全星质量管理 QMS 软件系统》:赋能企业高效质量管理
  • javascript如何通过原型链实现对象的继承,并指出这种继承方式的优缺点
  • ViT 模型介绍(三)——简单实战项目
  • ctfshow做题笔记—栈溢出—pwn57~pwn60
  • 【硬件设计】DDR与HBM的功能、区别及未来发展分析
  • Deepseek本地部署小实践(c盘)
  • Ollama+Cherrystudio+beg-m3+Deepseek R1 32b部署本地私人知识库(2025年2月win11版)
  • 论文复现7:VoxPoser复现
  • 分析 w-form-multiple-image.vue 文件中 console.log(v) 打印的内容
  • Javascript元编程
  • Redis要点总结一