bool isContainedSameForm(AG ag1, AG ag2){
if(isEmpty(ag2)) return false;
return isContainedSameForm(ag1->pH,ag2->pH) && isContainedSameForm(ag1->sH,ag2->sH);
};
int sameFormOcurrences(AG ag1,AG ag2,bool (*isContainedSameForm)(AG,AG)){
if(isEmpty(ag2)) return 0;
int ret=0;
if(isContainedSameForm(ag1,ag2)) ret=1;
return ret + sameFormOcurrences(ag1,ag2->pH,isContainedSameForm) + sameFormOcurrences(ag1,ag2->sH,isContainedSameForm);
};
int sameFormOcurrences(AG ag1, AG ag2){
return sameFormOcurrences(ag1,ag2,isContainedSameForm);
}
AG是一個普通的樹,這計數相同形式的樹有多少次出現在第二樹C/C++函數的參數
我不明白的是第一個目的sameFormOcurrences函數接收isContainedSameForm參數。
僅僅是改變簽名而不改變它的名字的一種方法? 如果它試圖避免未定義的方法,那麼它是否與上面已經聲明的函數重複?
是的,在這種情況下它有什麼用途? –
這是一個謂詞。這意味着您可以傳遞不同的算法來檢查它是否包含在同一個表單中,而不會更改sameFormOcurrences。 –
它可以讓你使用你自己的函數,而不是硬編碼到'isContainedSameForm'中,就像使用普通的函數調用一樣。參數具有相同名稱的事實是無關緊要的。 –