リンクされたリストのバブルソート機能に取り組んでいます。関数のヘッダーは次のとおりです。
void sort(struct lnode** head,
void (*swapPtr)(struct lnode** head, struct lnode* n1, struct lnode* n2),
int (*comparePtr)(void* v1, void* v2))
使用されている関数ポインターがよくわかりません。swapPtr
リスト内の 2 つのノードを交換するために使用される関数への関数ポインタです。comparePtr
3 つの関数の 1 つへのポインターとして使用されます。これらの関数はすべて、指定された単語のカウント数と行番号を格納するために使用される構造体の特定のメンバーの値を比較します。可能性は次のとおりです。
countComp
— 2 つのノードを取り、単語が現れる回数を比較し、等しい場合は 0、ノード 1 > ノード 2 の場合は 1、逆の場合は -1 を返します。wordComp
— 指定されたノードの単語を比較し、上記と同じ戻り値を返します。lineComp
— 上記と同じ戻り値で単語が出現する行番号を比較します。
バブル ソートのしくみと、ソートされたリストを作成するための一般的な手順を理解しています。私が混乱している領域は、呼び出す方法とcomparePtr
、それに何を渡す必要があるかです。またtest.c
、ソート方法のテストに使用するファイルもあります。sort 関数を呼び出すにはどうすればよいですか? 2 番目と 3 番目の引数に何を渡せばよいかわかりません。
誰かが私にこれを説明するのを手伝ってくれるなら、それは素晴らしいことです!