我使用sys/queue.h功能创建了一个LIST,其中包含
struct stInside{
int a;
int b;
};
struct stOutside{
struct stInside in;
LIST_ENTRY(stOutside) outq;
};
LIST_HEAD(stOutsideHead, stOutside) head = LIST_HEAD_INITIALIZER(head);
struct stOutsideHead *headPtr;
struct stOutside *list;
for(int i=0; i < 4; i++){
list = malloc(sizeof(struct stOutside));
list->in.a = i;
list->in.a = i;
LIST_INSERT_HEAD(&head, list, outq);
}
我想知道如何&为了根据结构体stInside的a字段对列表进行排序,应该使用什么 ?是否有任何特定的宏可以完成这项工作?我看到一个
#define LIST_SORT_PROTOTYPE(name, type, field, cmp)
QHELPER_SORT_PROTOTYPE(LIST, name, type, field, cmp)
sys/queue.h但是我不明白它是如何工作的。
非常感谢你的分享和你的时间。
看这个例子。它使用SLIST而不是LIST,但是思想是一样的。
基本上在使用排序函数原型的地方使用LIST_SORT_PROTOTYPE(...)
,在使用排序函数定义的地方使用LIST_SORT_GENERATE(...)
,在调用该函数的地方使用LIST_SORT(...)
。