求圖的深度優先遍歷程式c語言版

時間 2021-05-05 20:58:33

1樓:匿名使用者

#include "stdio.h"

#include "malloc.h"

#define max 20int visited[max];typedef struct arcnodearcnode;typedef int vertex;typedef struct vnodevnode;typedef vnode adjlist[max];typedef struct algraph; createdg(algraph *g)

} dispadj(algraph *g)printf("\n"); }}

dfs(algraph *g,int v)} bfs(algraph *g,int v)u=u->nextarc;}}

printf("\n");

} main()

2樓:匿名使用者

鄰接表表示的圖:#include"stdio.h"

#include"stdlib.h"#define maxvertexnum 50 //定義最大頂點數typedef struct nodeedgenode;

typedef struct vnodevertexnode;

typedef vertexnode adjlist[maxvertexnum]; //adjlist是鄰接表型別

typedef struct algraph; //圖型別//*****====建立圖的鄰接表*****==

void creatalgraph(algraph *g)

printf("input edges,creat adjacency list\n");

for(k=0;ke;k++)

}//*****====定義標誌向量,為全域性變數*****==

typedef enum boolean;

boolean visited[maxvertexnum];

//*****===dfs:深度優先遍歷的遞迴演算法*****=

void dfsm(algraph *g,int i)

}void dfs(algraph *g)

//**********bfs:廣度優先遍歷*****====

void bfs(algraph *g,int k)

p=p->next; //找vi的下乙個鄰接點

}}//endwhile

}//**********主函式**********=

void main()

鄰接矩陣表示的圖:

#include"stdio.h"

#include"stdlib.h"

#define maxvertexnum 100 //定義最大頂點數

typedef structmgraph; //用鄰接矩陣表示的圖的型別

//*****====建立鄰接矩陣*****==

void creatmgraph(mgraph *g)

for(i=0;in;i++)

for(j=0;jn;j++)

g->edges[i][j]=0; //初始化鄰接矩陣

printf("input edges,creat adjacency matrix\n");

for(k=0;ke;k++)

}//*****====定義標誌向量,為全域性變數*****==

typedef enum boolean;

boolean visited[maxvertexnum];

//*****===dfs:深度優先遍歷的遞迴演算法*****=

void dfsm(mgraph *g,int i)

void dfs(mgraph *g)

//**********=bfs:廣度優先遍歷*****==

void bfs(mgraph *g,int k)}}

//**********main*****

void main()

3樓:匿名使用者

bfs的基本思想是:首先訪問初始點v並將其標誌為已經訪問。接著通過鄰接關係將鄰接點入隊。

然後每訪問過乙個頂點則出隊。按照順序,訪問每乙個頂點的所有未被訪問過的頂點直到所有的頂點均被訪問過。廣度優先遍歷類似與層次遍歷。

其特點是盡可能先對橫向進行搜尋,從指定的出發點,按照該點的路徑長度由短到長的順序訪問圖中各頂點。下面給出bfs函式**:void bfs(graph *g,int vi)

p=p->next; //查詢v的下一鄰接點 }}

}請仔細理解其中佇列的使用。 完整程式:#include

#define max 6

typedef struct nodeadjnode; //定義邊表節點

typedef struct vertexvertexnode; //定義頂點

typedef struct graphadjgraph; //定義圖的結構

int visited[max];

void creatg(adjgraph *g) //初始化建立圖

//圖的頂點賦值這裡就是賦的0123

for(j=0;j<5;j++) //這裡的5就是edge的值也可換

}void dispg(adjgraph *g) //輸出圖,列印出鄰接表

printf("\n");}}

void bfs(adjgraph *g,int vi)

p=p->next; //查詢v的下一鄰接點 }}

}int main()

求大神幫寫乙個c語言圖的深度優先遍歷,和廣度優先遍歷??

4樓:匿名使用者

/*深度優先*/

#include

#include

struct node/*圖的頂點結構*/

;typedef struct node *graph;

struct node vertex_node[10];

void creat_graph(int *node,int n)

}void dfs(int k)

}main()

creat_graph(node,2*sn);/*呼叫函式建立鄰接表*/

printf("the result is:\n");

for(i=1;i<=vn;i++)/*將鄰接表內容輸出*/

printf("\n");

}printf("the result of depth-first search is:\n");

dfs(1);/*呼叫函式進行深度優先遍歷*/

printf("\n");

#include

#include

struct node

;typedef struct node *graph;

struct node vertex_node[10];

#define maxqueue 100

int queue[maxqueue];

int front = - 1;

int rear = - 1;

int visited[10];

void creat_graph(int *node, int n)

}int enqueue(int value) /*元素入佇列*/

int dequeue() /*元素出佇列*/

void bfs(int k) /*廣度優先搜尋*/

p = p->nextnode; /*訪問下乙個元素*/}}

}main()

creat_graph(node, 2 *sn); /*呼叫函式建立鄰接表*/

printf("the result is:\n");

for (i = 1; i <= vn; i++)

/*將鄰接表內容輸出*/

printf("\n");

}printf("the result of breadth-first search is:\n");

bfs(1); /*呼叫函式進行深度優先遍歷*/

printf("\n");}

優就業深度學習都學什麼,優就業的深度學習學了之後能做什麼?

奈何月光熹微 整個課程涉及的行業知識點是非常多的。具體來看看有哪些 ai概述及前沿應用成果介紹 人工神經網路及卷積神經網路原理及 tensorflow實 戰迴圈神經網路原理及專案實戰 生成式對抗網路原理及專案實戰 深度學習的分散式處理及專案實戰 深度強化學習及專案實戰 企業級專案實戰 車牌識別專案實...

求深度尺的讀數方法,深度尺的讀數方法是什麼?

是利用游標原理對裝置在尺框上的劃線量爪工作面,或測量頭與底座工作面相對移動分隔的距離進行讀數的一種測量器具。可用於測量工件的高度尺寸 相對位置以及精密劃線等。高度尺的使用方法與游標卡尺操作和讀數方法大體相同。1 劃線時,要把被測件放置在平板上,移動尺框使劃線量爪接近於需要的高度尺寸,在擰緊微動裝置上...

下面是一張房子戶型圖,求高手給予分析分析優劣之處,本人菜鳥求

迎彬的行業觀 首先確認這個戶型還不錯,優點 把著樓的東南角,明廚明衛,南向,帶陽臺,空間感還可以 缺點 餐廳的位置緊鄰臥室,要看進出是否方便,錯開門口能擺下否建議關注 此戶型明顯是塔樓或塔板結合,次臥室的南向窗戶較小,另外是不是在夾縫中,採光會有問題,需要實地去看,建議不要選擇低樓層,採光會更差,房...