先po个源码,讲解明天补上
#include <iostream>
#include <queue>
#define MAX 10000
using namespace std;
int map[MAX][MAX] = {};
int state[MAX] = {};
int length = 0;
queue<int> quemap;
void DFS(int x, int number) {
state[x] = 1;
cout << "当前结点为:" << x << endl;
for (int i = 1; i <= number; i++) {
if(state[i] == 0) {
system("pause");
DFS(i, number);
}
}
}
void begin() {
int number = 0, edge = 0;
cout << "请输入结点个数:";
cin >> number;
cout << "请输入边数:";
cin >> edge;
cout << "请输入每条边的顶点及权值:";
int a, b, len;
for (int i = 1; i <= edge; i++) {
cout << "正在插入第 " << i << "条边" << endl;
a = 0; b = a; len = 0;
cout << "请输入顶点A:";
cin >> a;
cout << "请输入顶点B:";
cin >> b;
cout << "请输入权值:";
cin >> len;
map[a][b] = len;
map[b][a] = len;
cout << "插入成功!" << endl;
}
cout << "进行DFS遍历:" << endl;
DFS(1, number);
cout << "进行BFS遍历:" << endl;
memset(state, 0, size(state));
quemap.push(1);
state[1] = 1;
int x = 0;
while (!quemap.empty()) {
x = quemap.front(); quemap.pop();
cout << "正在访问的节点为:" << x << endl;
system("pause");
for (int u = 1; u <= number; u++) {
if (state[u] == 0) {
quemap.push(u);
state[u] = 1;
}
}
}
}
int main() {
begin();
cout << "over" << endl;
system("pause");
}