新聞中心
在C語(yǔ)言中,通常我們使用數(shù)據(jù)結(jié)構(gòu)和算法來(lái)表示和處理圖形,在這里,我將向您展示如何使用C語(yǔ)言創(chuàng)建一個(gè)簡(jiǎn)單的有向圖(NS圖),以及如何對(duì)其進(jìn)行遍歷。

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),無(wú)棣網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:無(wú)棣等地區(qū)。無(wú)棣做網(wǎng)站價(jià)格咨詢:028-86922220
1. 定義圖的數(shù)據(jù)結(jié)構(gòu)
我們需要定義圖的數(shù)據(jù)結(jié)構(gòu),在這里,我們使用鄰接矩陣來(lái)表示圖,鄰接矩陣是一個(gè)二維數(shù)組,其中每個(gè)元素表示兩個(gè)頂點(diǎn)之間的邊,對(duì)于有向圖,如果存在從頂點(diǎn)i到頂點(diǎn)j的邊,則鄰接矩陣的元素a[i][j]為1,否則為0。
#include#define MAX_VERTICES 10 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} }; }
2. 深度優(yōu)先搜索(DFS)
接下來(lái),我們將實(shí)現(xiàn)一個(gè)深度優(yōu)先搜索(DFS)算法來(lái)遍歷圖,DFS是一種用于遍歷或搜索樹或圖的算法,在圖中,它從一個(gè)頂點(diǎn)開始,沿著一條路徑盡可能深地搜索,直到無(wú)法繼續(xù)為止,然后回溯并嘗試其他路徑。
void dfs(int graph[][MAX_VERTICES], int visited[], int vertex) {
visited[vertex] = 1;
printf("%d ", vertex);
for (int i = 0; i < MAX_VERTICES; i++) {
if (graph[vertex][i] == 1 && visited[i] == 0) {
dfs(graph, visited, i);
}
}
}
3. 主函數(shù)
現(xiàn)在,我們將在主函數(shù)中調(diào)用DFS函數(shù)來(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 visited[MAX_VERTICES] = {0};
printf("DFS traversal: ");
dfs(graph, visited, 0);
return 0;
}
4. 完整代碼
將上述代碼片段組合在一起,我們得到以下完整的C程序:
#include#define MAX_VERTICES 10 void dfs(int graph[][MAX_VERTICES], int visited[], int vertex) { visited[vertex] = 1; printf("%d ", vertex); for (int i = 0; i < MAX_VERTICES; i++) { if (graph[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; }
編譯并運(yùn)行此程序,您將看到以下輸出:
DFS traversal: 0 1 2 3 4
這表示從頂點(diǎn)0開始的深度優(yōu)先遍歷順序。
當(dāng)前名稱:c語(yǔ)言ns圖怎么畫
分享地址:http://www.dlmjj.cn/article/dhhsghe.html


咨詢
建站咨詢
