java用邻接矩阵实现图

package Graph;

//无向不带权重图
public class AdjacencyMatrixGraph {

    private int verticesNumber; //结点数量

    private int edgesNumber; //边数量

    private int[][] adjacency; //邻接矩阵

    //存在边时为1,不存在时为0
    static final int EDGE_EXIST = 1;

    static final int EDGE_NONE = 0;

    //set和get方法
    public int getVerticesNumber() {
        return verticesNumber;
    }

    public void setVerticesNumber(int verticesNumber) {
        this.verticesNumber = verticesNumber;
    }

    public int getEdgesNumber() {
        return edgesNumber;
    }

    public void setEdgesNumber(int edgesNumber) {
        this.edgesNumber = edgesNumber;
    }

    public int[][] getAdjacency() {
        return adjacency;
    }

    public void setAdjacency(int[][] adjacency) {
        this.adjacency = adjacency;
    }

    //构造方法,全是0的邻接矩阵
    public AdjacencyMatrixGraph(int giveVerticesNumber) {
        this.setVerticesNumber(giveVerticesNumber);
        this.setEdgesNumber(0);
        this.setAdjacency(new int[giveVerticesNumber][giveVerticesNumber]);
        for (int i = 0; i < giveVerticesNumber; i++) {
            for (int j = 0; j < giveVerticesNumber; j++) {
                this.adjacency[i][j] = AdjacencyMatrixGraph.EDGE_NONE;
            }
        }
    }

    //判断结点是否存在
    public boolean verticesExist(int num){
        if (num >= 0 && num < getVerticesNumber()) return true;
        return false;
    }

    //判断边是否存在
    public boolean edgeExist(int from, int to){
        if (verticesExist(from) && verticesExist(to)){
            return this.adjacency[from][to] != AdjacencyMatrixGraph.EDGE_NONE;
        }
        return false;
    }

    //在from和to两个结点之间添加边
    public void addEdge(int from, int to){
        if (verticesExist(from) && verticesExist(to)){
            this.adjacency[from][to] = AdjacencyMatrixGraph.EDGE_EXIST;
            this.adjacency[to][from] = AdjacencyMatrixGraph.EDGE_EXIST;
        }
    }

    //在from和to两个结点间删除边
    public void deleteEdge(int from, int to){
        if (verticesExist(from) && verticesExist(to)){
            if (this.adjacency[from][to] == AdjacencyMatrixGraph.EDGE_EXIST){
                this.adjacency[from][to] = AdjacencyMatrixGraph.EDGE_NONE;
                this.adjacency[to][from] = AdjacencyMatrixGraph.EDGE_NONE;
            }
        }
    }

    //重写toString,打印矩阵
    @Override
    public String toString() {
        for (int i = 0; i < this.adjacency.length; i++) {
            for (int j = 0; j < this.adjacency[i].length; j++) {
                System.out.print("结点" + this.adjacency[i][j] + " ");
            }
            System.out.println();
        }

        return "AdjacencyMatrixGraph{}";
    }

    public static void main(String[] args) {
    	//测试
        AdjacencyMatrixGraph adjacencyMatrixGraph = new AdjacencyMatrixGraph(3);
        adjacencyMatrixGraph.addEdge(0,2);
        adjacencyMatrixGraph.deleteEdge(0,2);
        adjacencyMatrixGraph.addEdge(0,1);
        adjacencyMatrixGraph.addEdge(1,2);
        adjacencyMatrixGraph.addEdge(2,1);
        adjacencyMatrixGraph.toString();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值