方案:这两个列表有相同的内存表示吗?

时间:2012-10-23 17:10:10

标签: list memory scheme representation

我正在使用R5RS标准的Scheme语言。

请看看这两个对象:

  1. (1 (2 . 3))
  2. (1 2 . 3)
  3. 他们有相同的记忆表示吗?像这样(A): enter image description here

    或者第一个是不同的?像这样(B):enter image description here

    那么......什么是正确的?

1 个答案:

答案 0 :(得分:5)

他们是不同的。第一个列表是这样构造的,对应于“B”图:

(cons 1
      (cons (cons 2 3)
            '()))

> '(1 (2 . 3))

而第二个列表结构是这样构造的,它对应于“A”图:

(cons 1
      (cons 2 3))

> '(1 2 . 3)

另请注意,第二个不是正确列表(意思是:以null结尾的列表。)

相关问题