Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;图形实现_C++_Data Structures_Graph - Fatal编程技术网

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];

与此处已回答的问题完全相同:为什么再次发布相同的问题?与此处已回答的问题完全相同:为什么再次发布相同的问题?