【发布时间】:2013-08-29 09:25:18
【问题描述】:
下面是 C 上泛型 qsort 的代码 sn-ps。
递归调用genmyqsort的第四个参数写什么?
int compnode(node *a, node *b){
return(strcmp(a->name,b->name));
}
void genmyqsort(void *a, int n, int size, int (*fcmp)(const void*,const void*)){
int pivot;
if(n>1){
pivot=partition(a,n,size);
genmyqsort(a*size, pivot,size);
genmyqsort(a+(pivot+1)*size,n-pivot-1,size);
}
}
在 main 中调用 Qsort。
genmyqsort(b,n,sizeof(node),(int(*)(const void*, const void*)) compnode);
【问题讨论】:
-
我想你只需要将比较函数指针传递给分区函数。
-
什么是节点?你得到一个编译错误?您似乎没有在任何地方使用 fcmp
-
通过 (int()(const void, const void*)) compnode 作为第四个参数。谢谢