C++ C++;图形实现
可能重复:C++ C++;图形实现,c++,data-structures,graph,C++,Data Structures,Graph,可能重复: 嗨 我想知道C++中的一个图形的快速实现。我需要数据结构易于操作和使用图形算法(如BFS、DFS、Kruskal、Dijkstra…)。 我需要这个算法奥运会的实现,所以数据结构写得越容易越好 你能推荐这样的DS(主结构或类以及它们中的内容)吗。我知道邻接列表和邻接矩阵是主要的可能性,但我指的是更详细的代码示例 例如,上次我必须为DFS实现一个图时,我想到了这个DS: struct Edge { int start; int end; struct Edge* next
嗨 我想知道C++中的一个图形的快速实现。我需要数据结构易于操作和使用图形算法(如BFS、DFS、Kruskal、Dijkstra…)。 我需要这个算法奥运会的实现,所以数据结构写得越容易越好 你能推荐这样的DS(主结构或类以及它们中的内容)吗。我知道邻接列表和邻接矩阵是主要的可能性,但我指的是更详细的代码示例 例如,上次我必须为DFS实现一个图时,我想到了这个DS:
struct Edge {
int start;
int end;
struct Edge* nextEdge;
}
然后使用大小为n的数组,在其第i个位置包含表示从第i个节点开始的边的边列表(struct Edge)
但是,当我试图在这个图上使用DFS时,我必须编写一个50行代码,其中包含大约10个while循环
有哪些“好”的实现?与其在边缘中维护nextEdge列表,不如单独实现它们
struct Edge
{
int start;
int end;
};
<>因为你正在使用C++,它是为奥运会,更好地使用STL所提供的一切。
因此,将边存储在向量中。这将有助于迭代边而不是节点的算法
如果需要从一个节点遍历到另一个节点(BFS、DFS),最好维护一个邻接列表
为此,再次使用向量数组
vector<int> adj[MAXNODE];
vector adj[MAXNODE];
您应该单独实现它们,而不是在边缘中维护nextEdge列表
struct Edge
{
int start;
int end;
};
<>因为你正在使用C++,它是为奥运会,更好地使用STL所提供的一切。
因此,将边存储在向量中。这将有助于迭代边而不是节点的算法
如果需要从一个节点遍历到另一个节点(BFS、DFS),最好维护一个邻接列表
为此,再次使用向量数组
vector<int> adj[MAXNODE];
vector adj[MAXNODE];
与此处已回答的问题完全相同:为什么再次发布相同的问题?与此处已回答的问题完全相同:为什么再次发布相同的问题?