は次のとおりです。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のみをチェックできる別の検索機能を作成する必要があるということです。私はID 10を探しにwan't場合は基本的に私は、私は他のいくつかのIDをテストしたい場合は
に関数を記述する必要がある30を言って、私は考えてagain..I異なる機能を記述する必要がありますあなたは私のポイントを持っています。
私はこの問題を解決するためにカリングするとしか思えませんが、残念なことにCはカリングを提供せず、私のコードはすべてのプラットフォームでコンパイルする必要があるため、コンパイラ固有の回避策を使用できません。
検索IDにグローバル変数を使用することは1つの解決策ですが、それを回避することはできません。
この問題を解決するにはどうすればよいですか?
しかし、明日、私はいくつかの構造、int型や文字を格納するために私のリンクリストを使用していますが、私はそれらのすべてを比較したい場合は、その後の構造形式が変更されます私のget_when_true関数はこれ以上一般的なままではありません – Nullpointer