摘要:無(wú)向圖的數(shù)據(jù)結(jié)構(gòu)邊數(shù)邊的數(shù)目鄰接表,存儲(chǔ)與該節(jié)點(diǎn)相鄰的節(jié)點(diǎn),一個(gè)鏈表數(shù)組無(wú)向圖的創(chuàng)建一個(gè)含有個(gè)節(jié)點(diǎn)但不含邊的無(wú)向圖從輸入流中讀取一幅圖返回圖中有多少個(gè)節(jié)點(diǎn)邊數(shù)添加一條邊節(jié)點(diǎn)相鄰的所有頂點(diǎn)對(duì)象的字符串表示實(shí)現(xiàn)很簡(jiǎn)單鄰接表既然實(shí)現(xiàn)了圖這種數(shù)據(jù)結(jié)
無(wú)向圖的數(shù)據(jù)結(jié)構(gòu)
Class Graph private final int V; 邊數(shù) private int E; 邊的數(shù)目 private Bag無(wú)向圖的API[] adj; 鄰接表,存儲(chǔ)與該節(jié)點(diǎn)相鄰的節(jié)點(diǎn),一個(gè)鏈表數(shù)組
public class Graph Graph(int V) 創(chuàng)建一個(gè)含有V個(gè)節(jié)點(diǎn)但不含邊的無(wú)向圖 Graph(In) 從輸入流中讀取一幅圖 int V() 返回圖中有多少個(gè)節(jié)點(diǎn) int E() 邊數(shù) addEdge(int v,int w) 添加一條邊 Iterableadj(int v) V節(jié)點(diǎn)相鄰的所有頂點(diǎn) String toString 對(duì)象的字符串表示
實(shí)現(xiàn)很簡(jiǎn)單
package Graph; import In.In; public class Graph { private final int V; private int E; private Bag[] adj; //鄰接表 public Graph(int V){ this.V = V; this.E = 0; adj = (Bag []) new Bag[V]; for(int v = 0;v < V;v++){ adj[v] = new Bag (); } } public Graph(In in){ this(in.readInt()); int E = in.readInt(); for(int i = 0;i < E;i++){ int v = in.readInt(); int w = in.readInt(); addEdge(v,w); } } public int V(){ return V;} public int E(){ return E;} public void addEdge(int v,int w){ adj[v].add(w); adj[w].add(v); E++; } public Iterable adj(int v){ return adj[v]; } }
既然實(shí)現(xiàn)了圖這種數(shù)據(jù)結(jié)構(gòu),那么接下來(lái)可以考慮圖的處理算法了。見(jiàn)下一篇
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64312.html
摘要:邊僅由兩個(gè)頂點(diǎn)連接,并且沒(méi)有方向的圖稱(chēng)為無(wú)向圖。用分隔符當(dāng)前為空格,也可以是分號(hào)等分隔。深度優(yōu)先算法最簡(jiǎn)搜索起點(diǎn)構(gòu)造函數(shù)找到與起點(diǎn)連通的其他頂點(diǎn)。路徑構(gòu)造函數(shù)接收一個(gè)頂點(diǎn),計(jì)算到與連通的每個(gè)頂點(diǎn)之間的路徑。 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter...
這篇講的是連通分量,連通分量是深度優(yōu)先搜索算法的一個(gè)應(yīng)用。 每進(jìn)行了一次dfs,就會(huì)找到一條連通分量。 定義如下的API public class CC CC(Graph g) 預(yù)處理構(gòu)造函數(shù) boolean connected(int v,in w) v和w連通嗎 int count() 改圖中的連通分量個(gè)數(shù) int id(int v) ...
摘要:樹(shù)是一副無(wú)環(huán)連通圖。互不相連的樹(shù)組成的集合稱(chēng)為森林。表示無(wú)向圖的數(shù)據(jù)類(lèi)型圖的基本操作的兩個(gè)構(gòu)造,得到頂點(diǎn)數(shù)和邊數(shù),增加一條邊。該方法不符合第一個(gè)條件,上百萬(wàn)個(gè)頂點(diǎn)的圖是很常見(jiàn)的空間不滿(mǎn)足。 四種重要的圖模型: 無(wú)向圖(簡(jiǎn)單連接) 有向圖(連接有方向性) 加權(quán)圖(連接帶有權(quán)值) 加權(quán)有向圖(連接既有方向性又帶有權(quán)值) 無(wú)向圖 定義:由一組頂點(diǎn)和一組能夠?qū)蓚€(gè)頂點(diǎn)相連的邊組成。 特殊:...
摘要:什么是圖前面說(shuō)完了樹(shù)這種數(shù)據(jù)結(jié)構(gòu),接下來(lái)在看看一種更加復(fù)雜的非線(xiàn)性數(shù)據(jù)結(jié)構(gòu)圖。其實(shí)圖這種數(shù)據(jù)結(jié)構(gòu)比較適合用來(lái)存儲(chǔ)我們常用的微信微博好友關(guān)系。 1. 什么是圖? 前面說(shuō)完了樹(shù)這種數(shù)據(jù)結(jié)構(gòu),接下來(lái)在看看一種更加復(fù)雜的非線(xiàn)性數(shù)據(jù)結(jié)構(gòu)——圖。 先看看下面圖這種數(shù)據(jù)結(jié)構(gòu)的圖片演示吧: showImg(https://img-blog.csdnimg.cn/20190319204147662.p...
摘要:那還有一個(gè)重要的問(wèn)題就是,從到是否存在一條路徑,如果有找出其中最短的那條。最短路徑問(wèn)題當(dāng)然這路考慮的是每條邊的都是權(quán)值為的情況。解決這個(gè)問(wèn)題的算法就是廣度優(yōu)先搜索算法下面給出其實(shí)現(xiàn)代碼,其中的使用了一個(gè)隊(duì)列用來(lái)保存需要遍歷的頂點(diǎn)。 上一篇講了從一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)是否存在路徑,用的時(shí)深度優(yōu)先搜索。那還有一個(gè)重要的問(wèn)題就是,從s到v是否存在一條路徑,如果有找出其中最短的那條。最短路徑問(wèn)題...
閱讀 1664·2019-08-30 13:04
閱讀 2217·2019-08-30 12:59
閱讀 1777·2019-08-29 18:34
閱讀 1875·2019-08-29 17:31
閱讀 1268·2019-08-29 15:42
閱讀 3546·2019-08-29 15:37
閱讀 2868·2019-08-29 13:45
閱讀 2782·2019-08-26 13:57