双链表是非线性数据结构还是线性数据结构?

时间:2015-05-27 15:08:19

标签: data-structures doubly-linked-list

线性数据结构顺序遍历数据元素,其中只能直接到达一个数据元素。例如:数组,链接列表。

但是在双向链表中,我们可以使用前一个指针和下一个指针来访问两个数据元素。

那么我们可以说双链表是非线性数据结构吗?

如果我错了,请纠正我。

谢谢。

5 个答案:

答案 0 :(得分:13)

非线性数据结构是这些数据结构,其中元素以非线性方式出现,这需要两个或多于二维的表示。元素 可能或者(或大部分) 存储在连续的内存位置,而不是以任何顺序/非线性地存储,就好像您已经跳过了两者之间的元素一样。访问元素也是以无序模式完成的。

示例: - 一棵树,这里可以从根到右子,到它的右子,......等等,从而跳过所有左边的节点。

但是,在双向链表中,您必须仅按顺序(线性)移动,向前移动(使用前向指针)或向后移动(使用前一指针)。 您无法在不遍历中间元素的情况下从列表中的任何元素跳转到任何远程元素。

因此,双向链表是一种线性数据结构。在线性数据结构中,元素以线性方式排列(即,一维表示)。

答案 1 :(得分:0)

你错了; 2理由:

  1. 虽然您可以从任何节点获取2个元素,但其中一个元素是您用于获取到此节点的元素,因此您只能访问一个 new 每个节点。
  2. 它仍然是线性的,因为它必须顺序遍历或排成一行。

答案 2 :(得分:0)

它仍然是顺序的:与需要随机访问每个元素的数组相比,您需要遍历列表中的某些元素以获取特定元素。

但是,您可以线性向前或向后,这可能会优化搜索。

答案 3 :(得分:0)

链表基本上是线性数据结构,因为它以线性方式存储数据。线性数据结构是以线性格式存储数据的行为,并且遍历是以顺序方式而不是以锯齿形方式。

答案 4 :(得分:0)

这取决于您打算在何处应用链接列表。如果您基于存储,则链表被认为是非线性的。另一方面,如果您基于访问策略,则链表被认为是线性的。