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

Posted accompanyinglight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无向图(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);
    }


}

  

以上是关于无向图(2.无向图的实现类)的主要内容,如果未能解决你的问题,请参考以下文章

2023-04-07 无向有权图之最小生成树问题

Java实现无向图的建立与遍历

数据结构图之存储结构

数据结构无向图的建立

无向图(1.抽象类实现)

求算法,用邻接矩阵和邻接表创建一个图,实现深度和广度搜索,菜单形式,c语言的代码。无向无权的图。