在c中实现图的数据结构的想法

时间:2013-01-05 09:06:58

标签: c data-structures linked-list

我想在C中实现一个图。我对如何存储每个节点感到困惑。我首先考虑使用链表但是如何存储连接到一个节点的下一个节点。

我应该使用什么数据结构以及如何使用它?

2 个答案:

答案 0 :(得分:0)

有一些众所周知的方法可以做到这一点。

一种是使用size [n] [n]的二维数组,其中n是节点数。如果存在从a到b的链接,则设置图[a] [b] = 1。这种方法通常很快但使用了大量内存,特别是如果没有那么多链接和很多节点。

另一种方法是为所有节点创建一个列表(或数组),并将其中每个节点的内容设置为指向动态数组或链接到的节点列表。

答案 1 :(得分:0)

在图表稀疏的情况下有用的数据结构是adjacency list(链接列表的链接列表),即顶点之间的连接(边)很少。

如果您的图表是dense,那么请使用adjacency matrix(nxn)2维数组,即您的顶点之间有很多边。