语言实现如何表示空列表?

时间:2013-01-23 02:40:26

标签: list data-structures

单链表中的每个节点都是一些数据和指向下一个项的指针(如果它是列表的尾部,则为空指针)。

我所知道的每种具有本机列表类型的语言都支持“空”列表,通常使用一些文字语法。

这将如何在机器的内存中表现出来?

我可以想到几个方法:

  • 在具有运行时类型信息的语言(即类型/值对)中,它可以是具有空值项的“列表”类型
  • 列表节点中数据项的空指针(但这仅在它是“指针”类型时有效,而不是直接嵌入节点数据结构中的值)
  • 一个特殊的象征性价值

语言之间的差异是否很大,或者有标准的方法吗?

1 个答案:

答案 0 :(得分:1)

这取决于实施。

我想象一个非常标准的单链表实现如下:

object List
  Node head

object Node
  Type data
  Node next

对于空列表,List.head将只是一个空指针。

或者,空列表可以是类型为List的空指针(尽管在某些语言中,这两者之间的差异并不重要)。

您也可以完全摆脱List,只需将列表定义为Node,然后空列表可以是:

  • 类型为Node的空指针(同样不适用于某些语言)
  • Node datanext为空(如果可能的话,可能无法区分具有一个空元素的列表)

某些语言可能没有空指针的概念,但您应该可以将其替换为特殊对象。