2011-03-02 28 views
1

好的,我需要一些幫助來思考這個問題。 我需要檢查列表和另一個列表是否在結構上相同。球拍/方案檢查結構是否相等

例如:

(一個(BC)DE))是相同的(F(GH)IJ)),因爲它們具有相同的結構。

現在清楚的基本情況是,如果兩個列表都是空的,它們在結構上是相等的。

另一方面,遞歸的情況我不知道從哪裏開始。

一些想法:

嗯,我們是不會介意的元素==到對方,因爲這並不重要。我們只關心結構。我知道我們會放下列表並遞歸調用帶有列表的cdr的函數。

迷惑我的部分是你如何確定一個原子或子列表是否具有相同的結構?

任何幫助將不勝感激。

回答

2

你到了那裏。在(免費的,在線的,優秀的)教科書中,這可以歸爲第17.3節「同時處理兩個列表:案例3」。我建議你看看。

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

警告:它看起來像你正在使用的數據定義爲「S-表達」,你能說出這樣的:

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

由於該數據的定義有三個在考慮其中兩種情況時,有九種可能性。

約翰·克萊門茨

(是的,你可以通過在更普遍的一個,包括不當列表中嵌入數據減少案件的數量。聽起來並不像一個好主意給我。)

+0

好如此一來,把兩個表達放在一起,這對我們有什麼幫助? – dsjoka 2011-03-03 00:19:46

+0

這個想法怎麼樣?如果我們把一個列表放在一起並且長度相同,那麼它們在結構上是相等的? – dsjoka 2011-03-03 00:24:32

+0

我的意思是統計多少次,我們做的是缺點 – dsjoka 2011-03-03 00:29:37