• 无向图(2.无向图的实现类)


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

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

    第二篇,java无向图的类实现,此篇主要列出实现的方法,需要参考其他类中方法(后续实现);

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

    /**
     * FileName: UndirGraph
     * Author:   Jerry
     * Date:     2020/2/10 19:48
     * Description: 无向图的数据结构
     */
    package graph;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class UndirGraph extends Graph {
        /**
         * 继承父类的构造函数
         * @param V
         */
        public UndirGraph(int V) {
            super(V);
        }
    
        /**
         * 在图中添加一条边v-w
         * @param v
         * @param w
         */
        @Override
        void addEdge(int v, int w) {
            adj[v].add(w);
            adj[w].add(v);
            this.E++;
        }
    
        /**
         * 获得与v相邻的所有顶点
         * @param v
         * @return
         */
        @Override
        Iterable<Integer> adj(int v) {
            return adj[v];
        }
    
        /**
         * 获得与s相连通的所有顶点
         * @param s
         * @return
         */
        @Override
        Iterable<Integer> search(int s) {
            DepthFirstSearch dfs = new DepthFirstSearch(this, s);
            List list = new ArrayList<Integer>();
            for (int i = 0; i < this.V(); i++) {
                if (dfs.getMarked(i)) {
                    list.add(i);
                }
            }
            return list;
        }
    
        /**
         * 是否存在s结点到v结点的路径
         * @param s
         * @param v
         * @return
         */
        @Override
        boolean hasPathTo(int s, int v) {
            DepthFirstSearchPath dfsPath = new DepthFirstSearchPath(this,s);
            return dfsPath.hasPathTo(v);
        }
    
        /**
         * 找出s到v的路径
         * @param s
         * @param v
         * @return
         */
        @Override
        Iterable<Integer> pathTo(int s, int v) {
            DepthFirstSearchPath dfsPath = new DepthFirstSearchPath(this,s);
            return dfsPath.pathTo(v);
        }
    
    
    }
    

      

  • 相关阅读:
    LeetCode 3 Longest Substring Without Repeating Characters
    //……关于前后端分离与不分离
    //……关于HTTP与HTTPS
    //……关于报文
    <node>……express的中间件……//
    <git>……git的基本使用……//
    <mongoose>……find与findOne的区别……//
    //……关于TCP三次握手与四次挥手
    C#文件操作
    梯度下降的简单例子
  • 原文地址:https://www.cnblogs.com/AccompanyingLight/p/12294050.html
Copyright © 2020-2023  润新知