簡體   English   中英

c++中使用class的DFS實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM