我想在c中实现一个图,我对如何存储每个节点感到困惑。我首先考虑使用链表,但我如何存储连接到一个节点的下一个节点。
有什么想法我应该使用什么数据结构,我应该如何使用它?
有一些众所周知的方法。
一种是使用大小为[n][n]的二维数组,其中n为节点数。如果从a到b有一个链接,则设置graph[a][b]= 1。这种方法通常很快,但占用大量内存,特别是在没有那么多链接和节点的情况下。
另一种方法是创建一个所有节点的列表(或数组),并将每个节点的内容设置为指向一个动态数组或它所链接的节点列表。
如果你的图是稀疏的数据结构是一个邻接表(链表的链表),当你在顶点之间有很少的连接(边)时。
如果你的图是密集的,那么使用邻接矩阵(nxn)二维数组,这种情况下,你的顶点之间有很多边