寬度優先遍歷
寬度優先遍歷和廣度優先遍歷是兩種不同的搜尋的方法,不同之處主要在於廣度優先搜尋需要使用到佇列,鑑於上一節已經介紹過深度優先遍歷,這裡直接舉個例子,貼上**吧,哈哈,偷個小懶~~對於圖中的節點,要進行廣度優先搜尋,過程如下:
假設先從a開始搜尋,將a加入佇列中;
直接從佇列中彈出a,搜尋a鄰接的所有頂點,加入佇列中並且列印出來,則:輸出:a->b->c;此時佇列中:b->c;
佇列再彈出b,此時將d加入佇列之中,並且列印出來;此時佇列:c->d;再彈出c,沒有鄰接的了,再彈出d,將e放入佇列,列印e;
佇列彈出e,隊列為空,搜尋結束。所以輸出為:a->b->c->d->e;
**貼上:
到這裡,廣度優先搜尋已經完成,這是對無向圖的哦!!/**
* 頂點類
*/public class vertex
}/**
* 對列類
*/public class queue
//插入操作方法
public void insert(int in)
array[++rear] = in;
} //刪除操作方法
public int remove()
return array[front++];
} //判斷佇列是否為空
public boolean isempty() }
/** * 圖類
*/public class graph
} myqueue = new queue(max_verts_num);
} //增加邊的方法
public void addedge(int start, int end)
//增加頂點的方法
public void addvertex(char lab)
//顯示頂點的方法
public void displayvertex(int index)
//獲取與已知節點相鄰接的未訪問過的節點
public int getunvisitedadjvertex(int v1)
}return -1; //未找到
} //廣度優先遍歷核心演算法
public void bfs()
} }}
import org.junit.test;
public class testbfsmethod
}
資料結構學習(二)
資料結構學習 二 目錄 程式設計專練 1 判斷二維陣列中乙個數存在 2 求乙個數的次方 3 求逆序對總數 4 判斷棧彈出順序是否正確 5 順時針列印矩陣中的資料 1 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個...
資料結構學習(二)
什麼是演算法?演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法具有五個基本特性 輸入 輸出 有窮性 確定性和可行性。演算法設計的要求 正確性 可讀性 健壯性 時間效率高和儲存量低 演算法時間複雜度的定義 在進行演算法分析時,語句總的執行次數t...
資料結構學習二 棧
棧 限制插入和刪除操作只能在乙個位置上進行的表。對棧的基本操作有push 進棧 和pop 出棧 前者相當於插入,後者則是刪除。棧也叫作先進後出表。本文使用鍊錶實現棧。pragma once 鍊錶型別宣告 struct node pragma once include node.h 棧定義 m hea...