方案:如何仅在列表的第二级删除元素?

时间:2014-11-05 23:27:24

标签: list scheme nested-lists

我已经完成了

1)delete element for the top-level of a list

2)delete element for a nested list no matter how deep the list is.

但如何解决以下问题:

  

编写一个Scheme函数,该函数将列表作为参数并返回与参数列表相同的列表,除非删除了第二个顶级元素。如果给定列表没有两个元素,则该函数应返回()。

在这个问题中,我不知道如何禁止递归到第3级,只删除输入列表第2级的元素。

1 个答案:

答案 0 :(得分:1)

所以我认为你有一个列表(a b c d),其中所有符号都可以是任何符号,甚至是子列表。您的代码需要将其减少到(a c d)。是吗?

这是一个提示:

(define (remove-2nd lst)
  (if (or (null? <??>)
          (null? <??>))
      <??>
      (cons <??> <??>)))