Я использую эту «пузырьковую сортировку» для сортировки 1 списка по WordSize, когда он возвращается, всегда теряет последние 1 значения. Это код:
wordLen *sortWordLen(wordLen *wrdlen)
{
int troca, x;
wordLen *aux;
wordLen *empty = NULL;
do
{
troca = 0;
aux = wrdlen;
while (aux->next != empty)
{
/* printf("||%d %d", aux->wordSize, aux->next->wordSize);*/
if ((aux->wordSize) <= (aux->next->wordSize))
{
/*Change counter*/
x = aux->counterLen;
aux->counterLen = aux->next->counterLen;
aux->next->counterLen = x;
/*Change wordsize*/
x = aux->wordSize;
aux->wordSize = aux->next->wordSize;
aux->next->wordSize = x;
troca = 1;
}
aux = aux->next;
}
empty = aux;
printf("%d ", empty->wordSize);
} while (troca);
return empty;
}
это ввод: WORDSIZE: 7, 2, 4, 8, 6 это вывод: WORDSIZE: 0, 2, 4, 6, 7