如何解决使用函数指针和qsort的Quicksort
我必须编写一个使用qsort和函数指针对整数数组进行排序的程序。
编写一个对n个整数数组进行排序的程序。读取n和数组的值之后 从标准输入中,程序将读取一个字符,如果该字符为“ a”,则排序 应该是升序,如果字符是d,则排序应该是降序,如果 字符为“ e”,则程序应退出执行。
这是我的代码,我不断收到错误:assignment of function 'void qsort(void*,size_t,int (*)(const void*,const void*))
。请问您有什么反馈意见吗?我是完全错了还是应该改变几件事?
#include <ctype.h>
#include <stdlib.h>
void quicksort(int *a,int n,int (*func)(char c))
{
qsort = (a,n,sizeof(int),func);
for (int i = 0; i < n; i++)
printf("%d ",a[i]);
}
int compare(char c)
{
if (c == 'a')
return -1;
if (c == 'd')
return 1;
else
return 0;
}
int main()
{
int *a,i;
scanf("%d",&n);
a = (int *)malloc(sizeof(int) * n);
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
char c;
while (1)
{
scanf("%c",c);
if (c == 'e')
break;
quicksort(a,compare);
}
free(a);
return 0;
}
解决方法
const db = MongoClient.db('products')
应该是
qsort = (a,n,sizeof(int),func);
即调用该函数,不要尝试为其分配该函数。
此外,传递给qsort的compare函数具有不同的签名,采用两个qsort(a,func);
参数而不是单个void*
。
您的代码进行重新分配,而不是函数调用。
void quicksort(int *a,int n,int (*func)(char c))
{
qsort(a,func);
for (int i = 0; i < n; i++)
printf("%d ",a[i]);
}
make调用qsort函数,并修复func签名得到两个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。