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

Is doubly linked list a non linear data structure or linear data structure?

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

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

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

如有错误请指正

谢谢。

你错了; 2 个理由:

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

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

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

非线性数据结构是那些元素以非线性方式出现的数据结构,需要二维或二维以上的表示。元素 可能或不可能(大部分)是 存储在连续的内存位置,而是在任何 order/non-linearly 中,就好像您已经跳过之间的元素。访问元素也是以无序模式完成的。

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

但是,在双向链表中,你必须顺序(线性)移动,向前移动(使用前向指针)或向后移动(使用前一个指针)。 如果不遍历中间元素,则不能从列表中的任何元素跳转到任何远处的元素。

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

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

这取决于你打算在哪里应用链表。如果你基于存储,链表被认为是非线性的。另一方面,如果你基于访问策略,那么链表被认为是线性的。