2012-11-06 95 views
-3

如果你有一个清单((1 4 5)5(6 2 5)),和另一个清单(5 1 3 7 5(9 2 4)),我需要编写一个程序来比较第一个列表,并看看他们是否在第二。例如,(1 4 5)在(5 1 3 7 5(9 2 3))中出现0次。 5在该列表中出现2次,并且(9 2 4)出现0次。所以列表将返回(0 2 0)比较列表中的项目?方案

我需要帮助编写一个计划程序频率,它需要两个列表,第一个是每个组件比较的程序频率,第二个是计算第一个列表的出现。该过程应该返回出现的列表。

到目前为止,我已被告知要制作两个程序,一个用于统计每个项目的出现次数(计数器),另一个用于记录列表(频率)中的出现次数(计数器)。我到目前为止已经做到了这一点:

(define (counter ele lst)

`(cond ((null? lst) `       
     '()) 
     `((equal? ele lst)`     
      `(+ 1 (counter ele (cdr lst))))`  
     `(else` 
     `(counter ele (cdr lst)))))`   

(define (frequency els lst)

`(if (null? els)` 
     `'()` 
     `(cons <???>` 
     `(frequency <???> lst))))` 

我不知道该怎么与频率的程序是什么,以及如何从它调用的程序计数器

谢谢!

+0

可能重复的[比较列表中的项目](http://stackoverflow.com/questions/13233232/comparing-items-in-a-list) –

+1

我不能相信这一点。上次你发布这个问题时,我给你提供了解决这个问题的所有必要提示,而且你还没有尽力尝试!你刚刚发布了_我自己的答案_希望别人填补你的空白! –

+0

你已经或多或少地用英文描述了什么应该填补空白。你的下一个任务不会因为你通过这一个作弊而变得更轻松。 – molbdnilo

回答

1

对于这样的事情,你将不得不使用类似对的东西?因为你使用列表清单的树木。

例如(列表(列表1 2)3 4)的车将成为列表1 2.这意味着如果您尝试比较值,您将得到一个错误。您需要从对中分离叶子(单个数字)以便能够进行比较。