无向图的邻接表表示

时间:2018-02-03 19:42:16

标签: arrays data-structures graph

我有一个简单的无向图,下面显示了4个顶点: enter image description here 我把它表示为(邻接列表): 链接节点的数组索引:

0 -> 1 ->3
1 -> 0 ->2
2 -> 1 ->3
3 -> 0 ->2

现在,当我尝试为例如0到1到2做DFS时,我做了什么:

  1. 转到主数组中的0索引
  2. 接下来即1
  3. 再次转到主数组以“查找”元素1
  4. ......等等
  5. 问题在于第3步,每当我需要找到任何节点的下一个我再次需要转到主数组时,如果元素的数据与其索引有任何不同,我需要“找到”数组中的第一个元素。使用非数字节点数据会变得更糟。关于如何在主阵列中“找到”节点不需要的任何帮助?

2 个答案:

答案 0 :(得分:1)

您需要的是一种将相关联的数据类型,使您可以有效地查找与任何特定键关联的值。 (在您的情况下,键是节点,值是节点列表。)这种数据类型通常称为“map”,“table”或“dictionary”。常用的实施方式是hash tablesbinary search trees

对于您的应用程序,哈希表可能是最有效的。

答案 1 :(得分:0)

您可以尝试使用array[LinkedList<Node>] 例如:

[0] Node 0 -> Node 1 -> Node 3
[1] Node 1 -> Node 0 -> Node 2
[2] Node 2 -> Node 1 -> Node 3
[3] Node 3 -> Node 0 -> Node 2

现在在第3步,你没有引用主数组,Node x将包含所有的adjecent节点值。如果您要应用visited Nodes,请维护一组dfs