j'ai sous la main cette fonction de tri par fusion que je ne comprend pas. Quelqu'un saurait-il m'expliquer grosso modo ligne par ligne ce qu'elle fait ? Aussi y'a-t-il possibilité de l'écrire de manière plus simple que ça ? Merci
Code :
void TriFusion(typeListItem * list) {
// Trivial case.
if (!list || !list->NextItem)
return list;
typeListItem *right = list,
*temp = list,
*last = list,
*result = 0,
*next = 0,
*tail = 0;
// Find halfway through the list (by running two pointers, one at twice the speed of the other).
while (temp && temp->NextItem) {
last = right;
right = right->NextItem;
temp = temp->next->NextItem;
}
// Break the list in two. (prev pointers are broken here, but we fix later)
Marsh Posté le 17-08-2015 à 12:44:49
Bonjour à tous,
j'ai sous la main cette fonction de tri par fusion que je ne comprend pas. Quelqu'un saurait-il m'expliquer grosso modo ligne par ligne ce qu'elle fait ?
Aussi y'a-t-il possibilité de l'écrire de manière plus simple que ça ?
Merci