zoukankan      html  css  js  c++  java
  • 无向图(1.抽象类实现)

    此篇文章为实现《算法》一书中提到的大部分无向图算法,分为多篇,

    即多个Java文件,可以直接复制,便于学习;

    第一篇,java无向图的抽象类实现,此篇主要列出实现的功能,接口;

    参考链接:https://www.cnblogs.com/xiaohuiduan/p/11352209.html#e5b9bfe5baa6e4bc98e58588e9818de58e86_6

    /**
     * FileName: Graph
     * Author:   Jerry
     * Date:     2020/2/10 19:20
     * Description: 图的抽象数据结构
     */
    package graph;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public abstract class Graph {
        //顶点数量
        int V;
        //边的数量
        int E;
        //邻接表
        List[] adj;
    
        //构造一个含有V个顶点的图,但是不含边
        Graph(int V) {
            adj = new ArrayList[V];
            for (int i = 0; i < V; i++) {
                adj[i] = new ArrayList<Integer>();
            }
            this.V = V;
        }
    
        /**
         * @return 返回顶点的数量
         */
        int V() {
            return V;
        }
    
        /**
         * @return 返回边的数量
         */
        int E() {
            return E;
        }
    
        /**
         * 在图中添加一条边v-w
         *
         * @param v
         * @param w
         */
        abstract void addEdge(int v, int w);
    
        /**
         * 获得与v相邻的所有顶点
         *
         * @param v
         * @return
         */
        abstract Iterable<Integer> adj(int v);
    
        /**
         * 与结点s相连接的所有结点
         *
         * @param s
         * @return
         */
        abstract Iterable<Integer> search(int s);
    
        /**
         * 是否存在s结点到v结点的路径
         *
         * @param s
         * @param v
         * @return
         */
        abstract boolean hasPathTo(int s, int v);
    
        /**
         * 找到s到v的路径
         *
         * @param s
         * @param v
         * @return
         */
        abstract Iterable<Integer> pathTo(int s, int v);
    
        /**
         * @return
         * 便于进行打印
         */
        @Override
        public String toString() {
            String s = "Graph{" +
                    "V=" + V + ",E="
                    + E + "}";
            for (int v = 0; v < V; v++) {
                s += (v + ":");
                for (int w : this.adj(v)) {
                    s += w + " ";
                }
                s += '
    ';
            }
            return s;
        }
    }
    

      

  • 相关阅读:
    笔试的坑 onsubmit事件
    正则之
    笔试:找出一个字符串中字符出现最多的次数和该字符
    createDocumentFragment和insertAdjacentHTML
    css权威指南学习笔记--第七章
    使用gulp-minify-css的坑
    arguments[0]() 笔试题的坑
    快速搭建本地服务器
    voxel折腾指南
    力扣第72题 编辑距离
  • 原文地址:https://www.cnblogs.com/AccompanyingLight/p/12294024.html
Copyright © 2011-2022 走看看