日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构(七)图的遍历(递归非递归方法)

發(fā)布時間:2023/11/30 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构(七)图的遍历(递归非递归方法) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

圖的遍歷(遞歸非遞歸方法)

#include<iostream> #include<stdio.h> #include<stack> #include<queue> using namespace std;typedef char VertexType; typedef int EdgeType;#define MAXVEX 100 #define INF 65535 bool visited[MAXVEX] ;typedef struct Graph {VertexType vexs[MAXVEX]; //頂點表EdgeType arc[MAXVEX][MAXVEX]; // 鄰接矩陣,邊表int vexnum, arcnum; //圖的當前頂點數(shù)和弧數(shù) }MGraph;void CreateGraph(MGraph* Graph) {cout << "請輸入頂點數(shù)和邊數(shù):"<<endl;cin >> Graph->vexnum >> Graph->arcnum;//請輸入頂點cout << "請輸入頂點" << endl;for (int i = 0; i < Graph->vexnum; i++){cin >> Graph->vexs[i];}//初始化鄰接矩陣for (int i = 0; i < Graph->vexnum; i++){for (int j = 0; j < Graph->vexnum; j++){Graph->arc[i][j] = INF;}}//輸入邊cout << "請輸入邊:" << endl;for (int i = 0; i < Graph->arcnum; i++){int x, y, v;cin >> x >> y >> v;Graph->arc[x][y] = v;Graph->arc[y][x] = v;}}void print_graph(MGraph* G) {for (int i = 0; i < G->vexnum; i++){for (int j = 0; j < G->vexnum; j++){cout << G->arc[i][j] << "\t";}cout << "\n";}}//深度遍歷(遞歸) void DFS(const MGraph* G, int i) {visited[i] = true;cout << i << "\t";for (int j = 0; j < G->vexnum; j++){if (!visited[j] && G->arc[i][j] != INF ){DFS(G, j);}} }//深度遍歷(非遞歸) void DFS01(const MGraph* G, int i) {visited[i] = true;stack<int> s;s.push(i);while (!s.empty()){i = s.top();s.pop();cout << i << "\t";for (int j = 0; j < G->vexnum; j++){if (!visited[j] && G->arc[i][j] != INF){visited[j] = true;s.push(j);}}}}//廣度遍歷 void BFS(const MGraph* G, int i) {queue<int> Q;Q.push(i);visited[i] = true;while (!Q.empty()){//出隊列i = Q.front();Q.pop();cout << i << "\t";//入隊列for (int j = 0; j < G->vexnum; j++){if (!visited[j] && G->arc[i][j] != INF){visited[j] = true;Q.push(j);}}}} int main() {MGraph* G = new MGraph;CreateGraph(G);print_graph(G);BFS(G, 0);}

總結

以上是生活随笔為你收集整理的数据结构(七)图的遍历(递归非递归方法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。