我正在研究链表的冒泡排序功能。这是函数的标题:
void sort(struct lnode** head,
void (*swapPtr)(struct lnode** head, struct lnode* n1, struct lnode* n2),
int (*comparePtr)(void* v1, void* v2))
我不太了解正在使用的函数指针。swapPtr
是一个函数指针,指向用于交换列表中两个节点的函数。comparePtr
用作指向三个函数之一的指针,所有这些函数都比较结构的某个成员中的值,该结构用于存储给定单词的计数和行号。可能性是:
countComp
— 取两个节点并比较单词出现的次数,如果相等则返回 0,如果 node1 > node 2 则返回 1,反之则返回 -1。wordComp
— 比较给定节点的单词,返回值与上述相同。lineComp
— 比较单词出现在与上述相同的返回值上的行号。
我了解冒泡排序的工作原理以及实现排序列表的一般步骤。我感到困惑的领域是如何打电话comparePtr
以及我需要传递什么?我还有一个test.c
用于测试我的排序方法的文件。我将如何调用排序函数?我不确定第二个和第三个参数应该传递什么。
如果有人可以帮助向我解释这一点,那就太好了!