当前位置:网站首页 > Java基础 > 正文

java图论教程

 package runoob.graph;

import java.util.Vector;

/*
 
邻接表
 */

public class SparseGraph {
    // 节点数
    private int n;
    // 边数
    private int m;
    // 是否为有向图
    private boolean directed;
    // 图的具体数据
    private Vector<Integer>[] g;

    // 构造函数
    public SparseGraph( int n , boolean directed ){
        assert n >= 0;
        this.n = n;
        this.m = 0;  
        this.directed = directed;
        // g初始化为n个空的vector, 表示每一个g[i]都为空, 即没有任和边
        g = (Vector<Integer>[])new Vector[n];
        for(int i = 0 ; i < n ; i ++)
            g[i] = new Vector<Integer>();
    }
    // 返回节点个数
    public int V(){ return n;}
    // 返回边的个数
    public int E(){ return m;}
    // 向图中添加一个边
    public void addEdge( int v, int w ){
        assert v >= 0 && v < n ;
        assert w >= 0 && w < n ;
        g[v].add(w);
        if( v != w && !directed )
            g[w].add(v);
        m ++;
    }

    // 验证图中是否有从v到w的边
    boolean hasEdge( int v , int w ){

        assert v >= 0 && v < n ;
        assert w >= 0 && w < n ;

        for( int i = 0 ; i < g[v].size() ; i ++ )
            if( g[v].elementAt(i) == w )
                return true;
        return false;
    }
}



















































  • 上一篇: java中级菜鸟教程
  • 下一篇: java8 lambda教程
  • 版权声明


    相关文章:

  • java中级菜鸟教程2025-12-02 12:26:06
  • java微信二次开发视频教程2025-12-02 12:26:06
  • java指定日期教程2025-12-02 12:26:06
  • java卡教程视频2025-12-02 12:26:06
  • java引用对象教程2025-12-02 12:26:06
  • java8 lambda教程2025-12-02 12:26:06
  • java163教程2025-12-02 12:26:06
  • java教程4832025-12-02 12:26:06
  • java视频教程国外2025-12-02 12:26:06
  • 最新java安装教程2025-12-02 12:26:06