最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)據(jù)結(jié)構(gòu)之有向圖設(shè)計與實(shí)現(xiàn)詳解

 更新時間:2022年11月01日 14:20:35   作者:JAVA旭陽  
有向圖是具有方向性的圖,由一組頂點(diǎn)和一組有方向的邊組成,每條方向的邊都連著一對有序的頂點(diǎn)。本文為大家介紹的是有向圖的設(shè)計與實(shí)現(xiàn),需要的可以參考一下

前言

在實(shí)際生活中,很多應(yīng)用相關(guān)的圖都是有方向性的,最直觀的就是網(wǎng)絡(luò),可以從A頁面通過鏈接跳轉(zhuǎn)到B頁面,那么a和b連接的方向是a->b,但不能說是b->a,此時我們就需要使用有向圖來解決這一類問題,它和我們之前學(xué)習(xí)的無向圖,最大的區(qū)別就在于連接是具有方向的,在代碼的處理上也會有很大的不同。

定義及相關(guān)術(shù)語

定義:

有向圖是一副具有方向性的圖,是由一組頂點(diǎn)和一組有方向的邊組成的,每條方向的邊都連著一對有序的頂點(diǎn)。

出度:

由某個頂點(diǎn)指出的邊的個數(shù)稱為該頂點(diǎn)的出度。

入度:

指向某個頂點(diǎn)的邊的個數(shù)稱為該頂點(diǎn)的入度。

有向路徑:

由一系列頂點(diǎn)組成,對于其中的每個頂點(diǎn)都存在一條有向邊,從它指向序列中的下一個頂點(diǎn)。

有向環(huán):

一條至少含有一條邊,且起點(diǎn)和終點(diǎn)相同的有向路徑。

一副有向圖中兩個頂點(diǎn)v和w可能存在以下四種關(guān)系:

  • 沒有邊相連;
  • 存在從v到w的邊v—>w;
  • 存在從w到v的邊w—>v;
  • 既存在w到v的邊,也存在v到w的邊,即雙向連接;

API設(shè)計

類名Digraph
成員變量1.private final int V: 記錄頂點(diǎn)數(shù)量2.private int E: 記錄邊數(shù)量3.private Queue[] adj: 鄰接表
構(gòu)造方法Digraph(int V):創(chuàng)建一個包含V個頂點(diǎn)但不包含邊的有向圖
成員方法1.public int V():獲取圖中頂點(diǎn)的數(shù)量2.public int E():獲取圖中邊的數(shù)量3.public void addEdge(int v,int w):向有向圖中添加一條邊 v->w4.public Queue adj(int v):獲取由v指出的邊所連接的所有頂點(diǎn)5.private Digraph reverse():該圖的反向圖

在api中設(shè)計了一個反向圖,其因?yàn)橛邢驁D的實(shí)現(xiàn)中,用adj方法獲取出來的是由當(dāng)前頂點(diǎn)v指向的其他頂點(diǎn),如果

能得到其反向圖,就可以很容易得到指向v的其他頂點(diǎn)。

代碼實(shí)現(xiàn)

/**
 * 有向圖設(shè)計
 *
 * @author alvin
 * @date 2022/11/1
 * @since 1.0
 **/
public class Digraph {

    //頂點(diǎn)數(shù)目
    private final int V;
    //邊的數(shù)目
    private int E;
    //鄰接表
    private Queue<Integer>[] adj;

    public Digraph(int V){
        //初始化頂點(diǎn)數(shù)量
        this.V = V;
        //初始化邊的數(shù)量
        this.E = 0;
        //初始化鄰接表
        this.adj = new Queue[V];
        for (int i = 0; i < adj.length; i++) {
            adj[i] = new ArrayDeque<>();
        }
    }

    //獲取頂點(diǎn)數(shù)目
    public int V(){
        return V;
    }

    //獲取邊的數(shù)目
    public int E(){
        return E;
    }

    //向有向圖中添加一條邊 v->w
    public void addEdge(int v, int w) {
        //只需要讓頂點(diǎn)w出現(xiàn)在頂點(diǎn)v的鄰接表中,因?yàn)檫吺怯蟹较虻模罱K,頂點(diǎn)v的鄰接表中存儲的相鄰頂點(diǎn)的含義是:  v->其他頂點(diǎn)
        adj[v].add(w);
        E++;
    }

    //獲取由v指出的邊所連接的所有頂點(diǎn)
    public Queue<Integer> adj(int v){
        return adj[v];
    }

    //該圖的反向圖
    private Digraph reverse(){
        //創(chuàng)建有向圖對象
        Digraph r = new Digraph(V);

        for (int v = 0;v<V;v++){
            //獲取由該頂點(diǎn)v指出的所有邊
            for (Integer w : adj[v]) {//原圖中表示的是由頂點(diǎn)v->w的邊
                r.addEdge(w,v);//w->v

            }

        }
        return r;
    }
}

到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之有向圖設(shè)計與實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Java有向圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis-plus之如何根據(jù)數(shù)據(jù)庫主鍵定義字段類型

    mybatis-plus之如何根據(jù)數(shù)據(jù)庫主鍵定義字段類型

    這篇文章主要介紹了mybatis-plus之如何根據(jù)數(shù)據(jù)庫主鍵定義字段類型問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java獲取本月日歷表的方法

    java獲取本月日歷表的方法

    這篇文章主要為大家詳細(xì)介紹了java獲取本月日歷表的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java中字符串與日期類型的相互轉(zhuǎn)換示例代碼

    Java中字符串與日期類型的相互轉(zhuǎn)換示例代碼

    這篇文章主要給大家介紹了關(guān)于Java中字符串與日期類型的相互轉(zhuǎn)換的相關(guān)資料,將Java(或任何編程語言)中的字符串轉(zhuǎn)換為日期是一項(xiàng)基本技能,對于在項(xiàng)目上進(jìn)行工作很有用需要的朋友可以參考下
    2023-08-08
  • Jmeter調(diào)用java腳本過程詳解

    Jmeter調(diào)用java腳本過程詳解

    這篇文章主要介紹了Jmeter調(diào)用java腳本過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Java中Hashtable類與HashMap類的區(qū)別詳解

    Java中Hashtable類與HashMap類的區(qū)別詳解

    Hashtable的應(yīng)用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable。可能你覺得Hashtable很好用,為什么不用呢?這里簡單分析他們的區(qū)別。
    2016-01-01
  • java的poi技術(shù)讀取和導(dǎo)入Excel實(shí)例

    java的poi技術(shù)讀取和導(dǎo)入Excel實(shí)例

    本篇文章主要介紹了java的poi技術(shù)讀取和導(dǎo)入Excel實(shí)例,報表輸出是Java應(yīng)用開發(fā)中經(jīng)常涉及的內(nèi)容,有需要的可以了解一下。
    2016-11-11
  • MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn)

    MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn)

    使用MyBatis中的模糊查詢時,當(dāng)查詢關(guān)鍵字中包括有_、\、%時,查詢關(guān)鍵字失效,本文主要介紹了MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn),感興趣的可以了解一下
    2024-06-06
  • 使用EasyPOI實(shí)現(xiàn)多sheet動態(tài)列導(dǎo)出

    使用EasyPOI實(shí)現(xiàn)多sheet動態(tài)列導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了如何使用EasyPOI根據(jù)指定時間范圍創(chuàng)建動態(tài)列,以及如何將數(shù)據(jù)組織成符合要求的格式并導(dǎo)出,感興趣的可以了解下
    2025-03-03
  • java導(dǎo)出數(shù)據(jù)庫的全部表到excel

    java導(dǎo)出數(shù)據(jù)庫的全部表到excel

    這篇文章主要為大家詳細(xì)介紹了java導(dǎo)出數(shù)據(jù)庫的全部表到excel的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 關(guān)于Spring?Boot內(nèi)存泄露排查的記錄

    關(guān)于Spring?Boot內(nèi)存泄露排查的記錄

    這篇文章主要介紹了關(guān)于Spring?Boot內(nèi)存泄露排查的記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

新建县| 宁都县| 武清区| 宝应县| 政和县| 和龙市| 化德县| 友谊县| 阳高县| 亳州市| 康保县| 成都市| 浦城县| 平罗县| 阳新县| 上杭县| 葵青区| 尉氏县| 齐河县| 抚宁县| 正阳县| 长阳| 惠水县| 盘山县| 当雄县| 东明县| 霍山县| 拉萨市| 和林格尔县| 宜章县| 诸暨市| 万盛区| 承德市| 洪江市| 凯里市| 澎湖县| 黑山县| 黄石市| 那坡县| 巴塘县| 英超|