2024/4/10 零点的图创建代码 尚硅谷-韩顺平时期

package com.atguigu;

import java.util.ArrayList;
import java.util.Arrays;

public class Grahph {
    private ArrayList<String> vertexList; //存储顶点集合
    private int[][] edges; //存储图对应的邻接矩阵
    private int numOfEdges; //表示边的数目

    public static void main(String[] args) {
        //测试一把图是否创建ok
        int n=5; //结点的个数
        String  Vertexs[]={"A","B","C","D","E"};
        //创建图对象
        Grahph grahph=new Grahph(n);
        //循环的添加顶点
        for(String vertex:Vertexs){
            grahph.insertVertex(vertex);
        }
        //添加边
        grahph.insertEdge(0,1,1);
        grahph.insertEdge(0,2,1);
        grahph.insertEdge(1,2,1);
        grahph.insertEdge(1,3,1);
        grahph.insertEdge(1,4,1);
        //显示一把邻接矩阵
        grahph.showGraph();
    }
    //构造器
    public Grahph(int n){
        //初始化矩阵和vertexList
        edges=new int[n][n];
        vertexList=new ArrayList<String>(n);
        numOfEdges=0;
    }
    //图中常用的方法
    //返回结点的个数
    public int getNumOfVertex(){
        return vertexList.size();
    }
    //显示图对应的矩阵
    public void showGraph(){
        for(int[] link: edges){
            System.out.println(Arrays.toString(link));
        }
    }


    //得到边的数目
    public int getNumOfEdges(){
        return numOfEdges;
    }
    //返回结点i(下标)对应的数据 0->"A" 1->"B" 2->"C"
    public String getValueByIndex(int i){
        return vertexList.get(i);
    }



    //插入结点
    public void insertVertex(String vertex){
        vertexList.add(vertex);
    }
    //添加边
    public void insertEdge(int v1,int v2,int weight){
        //v1表示点的下标即使第几个顶点 "A"-"B" "A"->0 "B"->1
        //v2表示第二个顶点对应的下标
        //weight表示
        edges[v1][v2]=weight;
        edges[v2][v1]=weight;
        numOfEdges++;
    }
}


输出

[0, 1, 1, 0, 0]
[1, 0, 1, 1, 1]
[1, 1, 0, 0, 0]
[0, 1, 0, 0, 0]
[0, 1, 0, 0, 0]

Process finished with exit code 0

posted @ 2024-04-10 00:58  redzhengtao  阅读(22)  评论(0)    收藏  举报