c語(yǔ)言ns圖怎么畫(huà)
在C語(yǔ)言中,語(yǔ)言通常我們使用數據結構和算法來(lái)表示和處理圖形,語(yǔ)言在這里,語(yǔ)言我將向您展示如何使用C語(yǔ)言創(chuàng )建一個(gè)簡(jiǎn)單的語(yǔ)言有向圖(NS圖),以及如何對其進(jìn)行遍歷。語(yǔ)言
(圖片來(lái)源網(wǎng)絡(luò ),語(yǔ)言侵刪)1. 定義圖的語(yǔ)言數據結構
我們需要ヽ(′▽?zhuān)?ノ定義圖的數據結構,在這里,語(yǔ)言我們使用鄰接矩陣來(lái)表示圖,語(yǔ)言鄰接矩陣是語(yǔ)言一個(gè)二維數組,其中每個(gè)元素表示兩個(gè)頂點(diǎn)??之間的語(yǔ)言邊,對于有向圖,語(yǔ)言如果存在(zai)從頂點(diǎn)i到頂點(diǎn)j的語(yǔ)言邊,則鄰接矩陣的語(yǔ)言元素(′?_?`)a[i][j]為1,否則為0。語(yǔ)言
#include??? <stヽ(′?`)ノdio.h>#define?? MAX_VERTICES 10int main() { int graph[MAX_VERTICE??S][MAX_VERTICES] = { { 0, 1, 1, 0, 0}, { 1, 0, 0,?? 1, 0}, { 1, 0, 0, 1, 0}, { 0, 1, 1, 0, 1}, { 0, 0, 0, 1, 0} };}2. 深度優(yōu)先搜索(DFS)
接下來(lái),我們將實(shí)現一個(gè)深度優(yōu)先搜索(DFS)算法來(lái)遍歷??圖,DFS是一種用于遍歷或搜索樹(shù)或圖的算法,在圖中,它從一個(gè)頂點(diǎn)開(kāi)始,沿著(zhù)一條路徑盡可能深地搜索,直到無(wú)法繼續為止,然后回溯并嘗試其他路(╬?益?)(lu)徑。
void dfs(int graph[][MAX_VERTICES], int visiヽ(′ー`)ノted[], in(′▽?zhuān)?t vertex) { visited[vertex] = 1; prin(T_T)tf(&quヽ(′?`)ノo??t;%d ", vertex); for (int i = 0; i < MAX_VERTICES; i++) { if (graph[vertex][i] == 1 && visited[i] == 0) { dfs(graph, visited, i); } }}3. 主函數
現在,我們將在主函數中調用DFS函數來(lái)遍歷圖。
int main() { int graph[MAX_VERTICES][MAX_VERTICES] = { { 0, 1, 1, 0, 0}, { 1, 0, 0, 1, 0},??? { 1, 0, 0, 1, 0}, { 0, 1, 1, 0, 1}, { 0, 0, 0, 1, 0} }; int vis??ited[MAX_VERTICES] = { 0}; printf("DF(╬ ò﹏ó)S traversal: "); dfs(graph, visited, 0); return 0;}4. 完整代碼
將上述代碼片段組合在一起,我(wo)們(◎_◎;)得到(′?_?`)以下完整的C程序:
#include <stdio.h>#define MAX_VERTICES 10void dfs(int?? graph[][MAX_VERTICES], int visited[], int vertex) { visited[vertex] = 1; printf(╯‵□′)╯("%d ", vertex); for (int i = 0; i < MAX_VERTICES; i++) { if (graヽ(′ー`)ノph[vertex][i] == 1 && visited[i] == 0) { dfs(graph, visited, i); } }}int main() { int graph[MAX_VERTICES][MAX_VERTICES] = { { 0, 1, 1, 0, 0}, { 1, 0, 0, 1, 0}, { 1, 0, 0, 1, 0}, { 0, 1, 1, 0, 1}, { 0, 0, 0, 1,(′?_?`) 0} }; int visited[MAX_VERTICES] = { 0}; printf(??-)?("DFS traversal: ")( ???); dfs(graph??, visited, 0); return 0;}編譯并運行此程序,您將看到以下輸出:
DFS traversal: 0 1 2 3 4
這表示從頂點(diǎn)0開(kāi)始的深度優(yōu)先遍歷順序。
