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

Posted accompanyinglight

tags:

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

  

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

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

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

3.无向图(无向图的深度优先搜索)

深度和广度优先搜索

无向图最小环问题解答

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