数据结构List和Graph有啥区别?

Posted

技术标签:

【中文标题】数据结构List和Graph有啥区别?【英文标题】:What's the difference between the data structure List and Graph?数据结构List和Graph有什么区别? 【发布时间】:2015-04-18 12:46:07 【问题描述】:

我知道单链表是由节点组成的,其中每个节点都有一个指向下一个节点的指针(或 null 结束列表),但图也有带有数据的节点和指向下一个节点的指针。

那么数据结构Linked List和Graph的本质区别是什么?那么基于 List 的搜索和基于 Graph 的搜索呢?

【问题讨论】:

一个图将有 多个 指向其他节点的指针(假设这是您存储图的方式)。 @Sneftel 当我有带循环的链表时,该链表将是一个图? 所有链表都是图。 没错。列表和树只是两种特殊的图形。你可以用节点和指针(顶点和边)制作的所有东西都是一个图。 @Anatoly 如果我们的答案不能满足您的需求,请告诉我们缺少什么以及您不满意的原因,但如果令人满意,请不要忘记投票并将其标记为答案,以便其他有类似情况的人问题知道这就是答案 【参考方案1】:

这不是真的,链表的节点中也有数据!(为什么你想要一个没有任何信息的节点列表?),实际上从数学的角度来看,链表是某种图形.

图和链表的主要区别在于链表中的一个节点最多有两个指针(一个指向下一个,一个指向上一个节点),但图中的一个节点可能有多个超过两个指针

【讨论】:

【参考方案2】:

链表是计算机科学中的数据结构,图是数学抽象。链表是图的可能实现之一。您始终可以以不同的方式实现图形。例如,具有 n 个顶点的图可以实现为数组 [n][n],其中如果数组 [i][j] 为真,则从顶点 i 到顶点 j 有一条边。也列出来。您可以保持与上一个和下一个节点的链接,或者只与其中一个节点保持链接。但它将是一个链接到另一个节点的节点,因为它是链表的定义。图的定义并没有说明如何将它保存在计算机程序中。

【讨论】:

【参考方案3】:

链表和图有相似之处,但链表节点是刚性的。 链表的节点具有预定义的结构,但图中的节点没有预定义的结构,例如,图的一个节点可以与另一个节点有任意数量的连接,但列表节点具有预定义的连接。列表节点只能连接相同类型的节点,而图节点也可以连接不同类型的节点。

【讨论】:

以上是关于数据结构List和Graph有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

数组,list,map,set各有啥优缺点;

list和vector有啥区别

Scala Stream vs Scala List vs Scala Sequence有啥区别

python中的list和list[:]有啥区别?

List 和 ArrayList 有啥区别? [复制]

java的这三种for循环有啥区别?