Pour la pratique, j'ai travaillé sur un compresseur qui fait la chose find-repeat-parts, make-dictionary, compress-avec-huffman codes.Échange de nœuds dans une liste à double liaison - l'algorithme de tri lent fait tomber les nœuds
Ça ne marche pas vraiment. L'un des problèmes est, pour une raison quelconque, mon algorithme de tri supprime des mots-clés du dictionnaire. Je pense que le problème est dans la routine d'échange, mais je ne suis pas sûr. (cette routine échange des mots-clés adjacents, avec next next-> next).
J'ai un mot-clé statique * head;
void swap(keyword * current, keyword * next) {
keyword * prev = current->prev;
if (prev){
prev->next = next;
next->prev = prev;
} else { /* no prev - current is head */
head = next;
next->prev = 0;
}
current->prev = next;
current->next = next->next;
next->next = current;
}
Vous ne trouvez pas ce produit:?
Si 'next' est toujours' current-> next', ne pouvez-vous supprimer cet argument et vous éviter des problèmes? –
Avez-vous essayé de faire une étape par étape dans un débogueur? – Alex
Ouais - les accolades ne sont pas sur la ligne suivante ;-) –