【问题标题】:Is doubly linked list a non linear data structure or linear data structure?双向链表是非线性数据结构还是线性数据结构?
【发布时间】:2015-08-09 18:29:06
【问题描述】:

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

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

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

如果我错了,请纠正我。

谢谢。

【问题讨论】:

    标签: data-structures doubly-linked-list


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 注意:链表(单链表和双链表)是一种线性数据结构我们谈论访问策略时。然而,它们被视为基于存储的非线性数据结构。
    【解决方案2】:

    你错了; 2 个理由:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        链表基本上是一种线性数据结构,因为它以线性方式存储数据。线性数据结构是以线性格式存储数据,遍历是顺序的,而不是曲折的。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-10
            • 2019-05-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多