我想在C中实现一个图。我对如何存储每个节点感到困惑。我首先考虑使用链表但是如何存储连接到一个节点的下一个节点。
我应该使用什么数据结构以及如何使用它?
答案 0 :(得分:0)
有一些众所周知的方法可以做到这一点。
一种是使用size [n] [n]的二维数组,其中n是节点数。如果存在从a到b的链接,则设置图[a] [b] = 1。这种方法通常很快但使用了大量内存,特别是如果没有那么多链接和很多节点。
另一种方法是为所有节点创建一个列表(或数组),并将其中每个节点的内容设置为指向动态数组或链接到的节点列表。
答案 1 :(得分:0)
在图表稀疏的情况下有用的数据结构是adjacency list(链接列表的链接列表),即顶点之间的连接(边)很少。
如果您的图表是dense,那么请使用adjacency matrix(nxn)2维数组,即您的顶点之间有很多边。