深度優先搜尋DFS C 實現

2021-08-20 05:45:19 字數 925 閱讀 8110

使用鄰接矩陣+棧的形式實現深度優先搜尋,棧中儲存訪問過的節點,後進先出的結構可以讓他回退搜尋未訪問過的節點。

//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沒有鄰...