首页 文章

球拍/方案检查结构相等性

提问于
浏览
1

好吧,我需要一些帮助来思考这个问题 . 我需要检查一个列表和另一个列表是否在结构上相等 .

例如:

(a(bc)de))与(f(gh)ij))相同,因为它们具有相同的结构 .

如果两个列表都是空的,它们在结构上是相等的 .

另一方面,递归情况我不知道从哪里开始 .

一些想法:

好吧,我们不会关心元素是否= =彼此因为无关紧要 . 我们只关心结构 . 我知道我们将列表列表并递归调用该列表的cdr函数 .

令我困惑的部分是你如何确定一个原子或子列表具有相同的结构?

任何帮助将不胜感激 .

1 回答

  • 2

    你到了那儿 . 在(免费,在线,优秀)教科书中,这属于第17.3节“同时处理两个列表:案例3” . 我建议你看看 .

    http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#node_toc_node_sec_17.3

    一个警告:看起来你正在使用的数据定义是“s-expression”,你可以这样说:

    ;; an s-expression is either
    ;; - the empty list, or
    ;; - (cons symbol s-expression), or
    ;; - (cons s-expression s-expression)
    

    由于该数据定义有三种情况,因此在考虑其中两种情况时有九种可能性 .

    约翰克莱门茨

    (是的,您可以通过将数据嵌入到包含不正确列表的更一般的数据中来减少案例数 . 对我来说听起来不是一个好主意 . )

相关问题