用一个vector来取代相邻节点迭代器

来源:7-3 相邻结点迭代器

慕设计8024997

2020-03-04

bobo老师好,是不是可以用一个vector来存储节点的相邻节点的index,从而不实用迭代器,因为迭代器概念不是很熟。

// DesenGraph.h
vector<int> adjInfo( int v ) {
        assert( v >= 0 && v < n) ;
        vector<int> res = vector<int>();
        for ( int i = 0; i < g[v].size(); i++ )
            if (g[v][i])
                res.push_back(i);
        return res;
    }
// SparseGraph.h
 vector<int> adjInfo( int v  ) {
         assert( v >= 0 && v < n );
         vector<int> res = vector<int>();
         for( int i = 0; i < g[v].size(); i++)
             res.push_back(g[v][i]);
         return res;
    }

相应的BFS的修改

void dfs( int v ) {

        visited[v] = true;
        vector<int> adjInfo = G.adjInfo(v);
        
        for( int i = 0; i < adjInfo.size(); i ++ )
            if( !visited[adjInfo[i]])
                dfs(adjInfo[i]);
    }
写回答

2回答

lobby

2022-04-29

会多一次vector的copy啊小伙子。

0
0

liuyubobobo

2020-03-04

可以的:)


其实很多时候,对于图论算法来说,不封装图这个类也是可以的:)


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程