Tag: 邻接列表

在无向图中查找从一个节点到另一个节点的所有路径

所以我有一个邻接列表forms的图形,结构如下面的代码所示。 鉴于这种forms的数据结构,我想知道如何找到并打印从给定节点到另一个节点的所有可能路径。 我知道我可能不得不使用堆栈来执行DFS或队列来执行BFS,我知道该怎么做,但我对如何找到所有可能的路径感到困惑 typedef struct graph { int n, maxn; Vertex** vertices; }Graph; typedef struct vertex { char* label; Edge* first_edge; }Vertex; typedef struct edge { int u, v; int weight; Edge* next_edge; }Edge ;

如何在C中创建有向图的邻接列表?

编辑:没有人回答,但我认为这与我如何存储我的列表有关。 现在我将每个顶点存储在一个名为G的节点数组中。但是我认为我需要使它成为一个二维数组,以便我不会覆盖其他节点中的数据。 (这很令人困惑) 正如标题所说,我正在尝试创建有向图。 我遇到了一个问题,每当我尝试将一个Node添加到顶点的邻接列表时,它就会改变前一个顶点的列表。 例如,我有一个带有这些边的简单有向图。 (父母,孩子) (2,1) (3,2) (3,4) (5,1) 当我尝试将顶点4添加到顶点3的邻接列表时,我最终改变了顶点2指向的顶点。 我需要它从3 – > 2 – > 4而不改变顶点2.我不知道如何做到这一点。 这是我的代码 Node* create_graph(Edge* E, int numbVertices, size_t size){ int i, j=0; Node* G = (Node*)malloc(sizeof(Node) * numbVertices); G[0].vertex = 0; G[0].next = NULL; for(i=1;i<numbVertices;i++){ G[i].e = 0; G[i].vertex = i; G[i].next = NULL; for(j=0;j<size;j++){ if((E[j].p) == […]