我试图在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