這篇文章將為大家詳細講解有關(guān)java編程無向圖結(jié)構(gòu)的存儲及DFS操作代碼的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、左貢網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
圖的概念
圖是算法中是樹的拓展,樹是從上向下的數(shù)據(jù)結(jié)構(gòu),結(jié)點都有一個父結(jié)點(根結(jié)點除外),從上向下排列。而圖沒有了父子結(jié)點的概念,圖中的結(jié)點都是平等關(guān)系,結(jié)果更加復雜。
無向圖 有向圖
圖G=(V,E),其中V代表頂點Vertex,E代表邊edge,一條邊就是一個定點對(u,v),其中(u,v)∈V。
這兩天遇到一個關(guān)于圖的算法,在網(wǎng)上找了很久沒有找到j(luò)ava版的關(guān)于數(shù)據(jù)結(jié)構(gòu)中圖的存儲及其相關(guān)操作。于是找了一本java版的數(shù)據(jù)結(jié)構(gòu)書看了一下,以下是根據(jù)書上的講解整理的一個關(guān)于無向圖的存儲和對圖的深度優(yōu)先遍歷。不過這個遍歷只能遍歷連通圖,要想遍歷非連通圖,還需要修改。在這里分享一下代碼希望對有需要的人有幫助。
package com.homework; /** * 定義棧類 */ class StackX{ private final int size = 20; private int[] st; private int top; //初始化棧 public StackX(){ st = new int[size]; top = -1; } //進棧 public void push(int j){ st[++top] = j; } //出棧 public int pop(){ return st[top--]; } //返回棧頂元素 public int peak(){ return st[top]; } //判斷棧是否為空 public Boolean isEmpty(){ return (top==-1); } } /** * 定義圖中的節(jié)點類 * @author Administrator * */ class Vertex{ public char label; public Boolean wasVisited; public Vertex(char lab){ label = lab; wasVisited = false; } } /** * 定義圖類 * @author Administrator * */ class Graph{ private final int num = 20; private Vertex vertexList[]; //圖中節(jié)點數(shù)組 private int adjMat[][]; //節(jié)點矩陣 private int nVerts; //當前節(jié)點數(shù) private StackX theStack; //定義一個棧 //初始化圖的結(jié)構(gòu) public Graph(){ vertexList = new Vertex[num]; adjMat = new int[num][num]; nVerts = 0; for (int i=0; i程序運行的結(jié)果:
The order visited:ABCED關(guān)于“java編程無向圖結(jié)構(gòu)的存儲及DFS操作代碼的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
本文題目:java編程無向圖結(jié)構(gòu)的存儲及DFS操作代碼的示例分析
本文地址:http://weahome.cn/article/gedhsh.html