[英]DFS implementation using class in c++
請讓我知道程序中出現錯誤的原因。 我試圖創建一個圖形 class 並使用 dfs 實現元素的打印。
以下代碼的鏈接是:
#include <bits/stdc++.h>
using namespace std;
class graph {
public:
int **adj;
int *visited;
int n,e;
graph(int vert, int edges) {
e = edges;
n = vert;
adj = new int*[n];
for(int i=0; i<n; i++) {
adj[i] = new int[n];
for(int j=0; j<n; j++) {
adj[i][j] = 0;
}
}
visited = new int[n];
for(int i=0; i<n; i++) {
visited[i] = 0;
}
}
void inputAdj() {
for(int i=0; i<e; i++) {
int l,r;
cin>>l>>r;
adj[l][r] = 1;
adj[r][l] = 1;
}
}
void DFS(int k) {
cout<<k<<" ";
visited[k] = 1;
for(int i=0; i<n; i++) {
if(k == i) continue;
if(adj[k][i] == 1) {
if(visited[i]) {
continue;
}
}
DFS(i);
}
}
~graph() {
for(int i=0; i<n; i++) {
delete[] adj[i];
}
delete[] adj;
delete[] visited;
}
};
void printDFS(graph *g, int sz) {
for(int i=0; i<sz; i++) {
if(!g->visited[i]) {
g->DFS(i);
}
}
}
int main() {
int n = 7, e = 6;
// cin>>n>>e;
graph g(n,e);
g.inputAdj();
// int etf;
// cin>>etf;
printDFS(&g, n);
return 0;
}
我給出的輸入是:
0 1
1 2
2 3
3 4
4 0
5 6
我收到的錯誤:
run: line 1: 3 File size limit exceeded(core dumped) LD_LIBRARY_PATH=/usr/local/gcc-8.3.0/lib64 ./a.out
我認為這個錯誤的原因是這里創建了某種無限循環。 我無法找到它。 請幫忙!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.