Я создаю функцию сравнения для использования qsort (), но не могу правильно преобразовать элементы. Я пробовал с разными вещами, но ничего не получается. Может кто-нибудь объяснить мне правильную логику этого? Заранее спасибо!
typedef struct _stringa {
char* string;
int freq;
} stringa;
int compare(const void *elem1, const void *elem2) {
if (*(stringa*)elem1.freq < *(stringa*)elem2.freq) {
return -1;
} else if (*(stringa*)elem1.freq > *(stringa*)elem2.freq) {
return 1;
}
return 0;
}
РЕДАКТИРОВАТЬ: Извините за второй вопрос, но моя сортировка не работает и, кажется, «удаляет» элементы. Это правильный способ вызвать qsort?
qsort(ARRAY, ARRAY_DIMENSION, sizeof(struct _stringa), compare);
ARRAY
? Это массивstruct
? - person haccks   schedule 05.07.2014sizeof(struct _stringa)
наsizeof(struct _stringa *)
. - person haccks   schedule 05.07.2014