亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

定義:

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

出度:

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

入度:

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

有向路徑:

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

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

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

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

代碼實現(xiàn)

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

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

    public Digraph(int V){
        //初始化頂點數(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<>();
        }
    }

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

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

    //向有向圖中添加一條邊 v->w
    public void addEdge(int v, int w) {
        //只需要讓頂點w出現(xiàn)在頂點v的鄰接表中,因為邊是有方向的,最終,頂點v的鄰接表中存儲的相鄰頂點的含義是:  v->其他頂點
        adj[v].add(w);
        E++;
    }

    //獲取由v指出的邊所連接的所有頂點
    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++){
            //獲取由該頂點v指出的所有邊
            for (Integer w : adj[v]) {//原圖中表示的是由頂點v->w的邊
                r.addEdge(w,v);//w->v

            }

        }
        return r;
    }
}

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

相關(guān)文章

  • java實現(xiàn)上傳圖片并壓縮圖片大小功能

    java實現(xiàn)上傳圖片并壓縮圖片大小功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)上傳圖片并壓縮圖片大小功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解Java Cglib動態(tài)代理

    詳解Java Cglib動態(tài)代理

    這篇文章主要介紹了Java Cglib動態(tài)代理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java代理,感興趣的朋友可以了解下
    2020-08-08
  • SpringBoot JWT實現(xiàn)token登錄刷新功能

    SpringBoot JWT實現(xiàn)token登錄刷新功能

    JWT本身是無狀態(tài)的,這點有別于傳統(tǒng)的session,不在服務(wù)端存儲憑證。這種特性使其在分布式場景,更便于擴展使用。接下來通過本文給大家分享SpringBoot JWT實現(xiàn)token登錄刷新功能,感興趣的朋友一起看看吧
    2021-09-09
  • Java設(shè)計模式之裝飾模式詳解

    Java設(shè)計模式之裝飾模式詳解

    這篇文章主要介紹了Java設(shè)計模式中的裝飾者模式,裝飾者模式即Decorator Pattern,裝飾模式是在不必改變原類文件和使用繼承的情況下,動態(tài)地擴展一個對象的功能,裝飾模式又名包裝模式。裝飾器模式以對客戶端透明的方式拓展對象的功能,是繼承關(guān)系的一種替代方案
    2022-08-08
  • Java內(nèi)省實例解析

    Java內(nèi)省實例解析

    這篇文章主要介紹了Java內(nèi)省實例解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java實現(xiàn)選課系統(tǒng)

    java實現(xiàn)選課系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)選課系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • synchronized背后的monitor鎖實現(xiàn)詳解

    synchronized背后的monitor鎖實現(xiàn)詳解

    這篇文章主要為大家介紹了synchronized背后的monitor鎖實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java中的內(nèi)存分配圖解

    Java中的內(nèi)存分配圖解

    這篇文章主要介紹了Java中的內(nèi)存分配圖解,Java 程序運行時,需要在內(nèi)存中分配空間。為了提高運算效率,就對空間進行了不同區(qū)域的劃分,因為每一片區(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存管理方式,需要的朋友可以參考下
    2023-08-08
  • springboot項目配置多數(shù)據(jù)庫連接的示例詳解

    springboot項目配置多數(shù)據(jù)庫連接的示例詳解

    這篇文章主要介紹了springboot項目配置多數(shù)據(jù)庫連接的示例,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 如何設(shè)計一個秒殺系統(tǒng)

    如何設(shè)計一個秒殺系統(tǒng)

    本文主要介紹了如何設(shè)計一個秒殺系統(tǒng)的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03

最新評論