J'ai du mal à inverser ma liste de doublons (avec seulement une sentinelle arrière) en C, je l'approche en changeant les pointeurs et voici le code que j'ai jusqu'à présent:Inverser le lien lié en C
/* Reverse the deque
param: q pointer to the deque
pre: q is not null and q is not empty
post: the deque is reversed
*/
/* reverseCirListDeque */
void reverseCirListDeque(struct cirListDeque *q)
{
struct DLink *back = q->backSentinel;
struct DLink *second = q->backSentinel->prev;
struct DLink *third = q->backSentinel->next;
while (second != q->backSentinel->next){
back->next = second;
third = back->prev;
back->next->prev = back;
back = second;
second = third;
}
}
Mais il ne semble pas fonctionner, je l'ai testé avec un deque qui ressemble à ceci: 1, 2, 3 la sortie est: 3 et ce processus semble gâcher la valeur réelle des nombres. c'est à dire. 2 devient 2.90085e-309 ... Je pense que le changement de pointeur est foiré mais je ne peux pas trouver le problème. Et même si cela ne signifie pas que mon code est correct. il compile bien.
Si c'est un devoir, vous devez ajouter le tag _homework_ à votre question. – zneak