我試圖在C. 寫鏈表在通用搜索功能的功能如下:在C編寫鏈表的通用搜索函數?
void* get_when_true(linked_list *l,
int (*condition)(const void*)) {
node **walk = &l->head;
while (*walk != NULL && !condition((*walk)->data)) {
walk = &((*walk)->next);
}
return (*walk)->data;
}
基本上條件是一個函數指針,這將針對每個元件進行測試的功能的鏈表,並且只要這個函數返回true就返回特定的節點。
我的鏈表中的每個節點都存儲一些ID。我的問題是,如果我不想搜索特定的ID,則必須編寫一個單獨的搜索功能,該功能只能檢查該特定的ID。基本上,如果我wan't找ID 10.我必須寫一個函數
如果我想測試一些其他的ID說30,我會寫一個不同的功能again..I認爲你明白了我的觀點。
我只能想到currying來解決這個問題..但不幸的是C不提供currying,我不能使用一些編譯器特定的解決方法,因爲我的代碼應該在所有平臺上編譯。
使用全局變量作爲搜索ID是一種解決方案,但我不想避免它。
如何解決這個問題?
但明天,如果我用我的鏈表存儲一些結構,整數和字符,我想比較它們都那麼結構格式將發生變化並且我的get_when_true函數將不會保持通用 – Nullpointer