使用鄰接矩陣+棧的形式實現深度優先搜尋,棧中儲存訪問過的節點,後進先出的結構可以讓他回退搜尋未訪問過的節點。
//dfs,使用 鄰接矩陣+棧 實現
#include #include using namespace std;
#define max_verts 20
class vertex
public:
bool wasvisited;
char label;
};class graph
;graph::graph() }}
graph::~graph()
//新增頂點
void graph::addvertex(char lab)
//新增邊
void graph::addedge(int start, int end)
void graph::printmatrix()
cout << endl; }}
//顯示頂點標籤
void graph::showvertex(int v)
//獲得未訪問過的下乙個頂點
int graph::getadjunvisitedvertex(int v)
return -1;
}//深度優先搜尋
void graph::dfs()
} cout << endl;
//為了下一次搜尋再把wasvisited變成false
for (int j = 0; j < nverts; j++)
vertexlist[j]->wasvisited = false;
}int main()
深度優先遍歷 DFS C實現
深度優先遍歷的主要思想 首先以乙個未被訪問過的頂點作為起始頂點,沿當前頂點的邊走到未被訪問過的頂點 當沒有未被訪問的頂點時,則回到上乙個頂點,繼續試探試探訪問別的頂點,直到所有的頂點都被訪問過.顯然,深度優先遍歷是沿著圖的某一條分支遍歷直到末端,然後回溯 su 再沿著另一條進行同樣的遍歷,直到所有的...
js實現廣度優先搜尋和深度優先搜尋
最近在學習演算法,看了 演算法,但是感覺寫的太簡單,理論比較多,實現比較和例子比較少,看完後,又接著看了 啊哈!演算法 這個感覺例子比較多,也比較適合我這種演算法入門的讀者。書上的例子一一打了一遍,因為作者是用c寫的,而我是沒接觸過c,用了自己比較熟悉的js把例子打了一遍。用廣搜寫了貪吃蛇自動吃果實...
廣度優先搜尋 深度優先搜尋
前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...