嗨,有人可以帮我解决这个错误。在分区块中,它表示我给出了结构列表枢轴"不兼容的类型。它说我需要在我的问题中添加更多细节,所以我要继续写下更多的东西而忽略。
struct list {
char first;
char second;
char third;
char fourth;
};
struct list *plist[num];
for(int i = 0; i < num; i++) {
plist[i] = &list[i];
}
这是我对列表进行分区的地方。没有分区的乐趣
int part(struct list **A, int start, int finish) {
//Error is popping up in this block
struct list pivot = A[start]->first;
int i = start;
int j = finish;
while(1) {
while(strcmp(A[i]->first, pivot) < 0) {
i = i + 1;
}
while(strcmp(A[j]->first, pivot) > 0) {
j = j - 1;
}
if(i < j){
swap(&A[i], &A[j]);
} else {
return j;
}
}
}
继承我的排序功能。
void sort(struct list **A, int start, int finish){
if(start < finish){
int p = part(A, start, finish);
sort(A, start, p);
sort(A, p + 1, finish);
}
}
继承人我试图打印我的排序列表,但它没有工作......但
sort(plist, 0, num);
for(int i = 0; i < num; i++) {
printf("%s \n\n", plist[i]->first);
}
答案 0 :(得分:1)
考虑数据成员first
如何在代码中使用,它被声明为字符数组或指向字符的指针。无论如何,这个声明中的初始化
struct list pivot = A[start]->first;
没有意义,因为结构和字符数组(或指向字符的指针)显然是不兼容的类型。
似乎你可以改写
const char *pivot = A[start]->first;
如果要将结构对象用作枢轴,则应编写
struct list pivot = *A[start];
并且在代码中使用表达式pivot.first
而不是pivot
,例如
while(strcmp(A[i]->first, pivot.first) < 0) {