双向链表是非线性数据结构还是线性数据结构?
Posted
技术标签:
【中文标题】双向链表是非线性数据结构还是线性数据结构?【英文标题】:Is doubly linked list a non linear data structure or linear data structure? 【发布时间】:2015-08-09 18:29:06 【问题描述】:线性数据结构按顺序遍历数据元素,其中只能直接到达一个数据元素。例如:数组、链表。
但是在双向链表中,我们可以使用前一个指针和下一个指针来访问两个数据元素。
那么我们可以说双向链表是一种非线性数据结构吗?
如果我错了,请纠正我。
谢谢。
【问题讨论】:
【参考方案1】:非线性数据结构是那些元素以非线性方式出现的数据结构,它需要二维或多于二维的表示。元素可能或可能不(大部分)存储在连续的内存位置,而是以任何顺序/非线性存储,就好像您跳过了中间的元素一样。访问元素也是无序的。
示例:- 一棵树,这里可以从根迭代到右子节点,再到其右子节点,等等——从而跳过所有左节点。
但是,在双向链表中,您只能按顺序(线性)移动,向前移动(使用前向指针)或向后移动(使用前一个指针)。 在不遍历中间元素的情况下,你不能从列表中的任何元素跳转到任何远处的元素。
因此,双向链表是一种线性数据结构。在线性数据结构中,元素以线性方式排列(即一维表示)。
【讨论】:
注意:链表(单链表和双链表)是一种线性数据结构当我们谈论访问策略时。然而,它们被视为基于存储的非线性数据结构。【参考方案2】:你错了; 2 个理由:
-
虽然您可以从任何节点获取 2 个元素,但其中一个是您用来获取此节点的元素,因此您只能获取一个 new每个节点。
它仍然是线性的,因为它必须按顺序或在一行中遍历。
【讨论】:
【参考方案3】:它仍然是顺序的:与可以随机访问每个元素的数组相比,您需要遍历列表中的一些元素才能到达特定元素。
但是,您可以线性前进或后退,这可能会优化搜索。
【讨论】:
【参考方案4】:链表基本上是一种线性数据结构,因为它以线性方式存储数据。线性数据结构是以线性格式存储数据,遍历是顺序的,而不是曲折的。
【讨论】:
【参考方案5】:这取决于您打算在哪里应用链表。如果基于存储,链表被认为是非线性的。另一方面,如果你基于访问策略,那么链表被认为是线性的。
【讨论】:
以上是关于双向链表是非线性数据结构还是线性数据结构?的主要内容,如果未能解决你的问题,请参考以下文章