2012-05-10 3 views
0

Je sais que c'est un code minute. Je ne peux pas comprendre pourquoi mon inversion de liste liée ne fonctionne pas. Quelqu'un peut-il m'aider à corriger ma méthode inverse dans le code ci-dessous.liste inversée ne fonctionne pas ....?

//Reverse a single linked list 
public Node reverse() 
{ 
    return reverse(root); 
} 
private Node reverse(Node node) 
{ 
     Node previous = null; 
     Node current = node; 
     Node forward; 

     while (current != null) 
    { 
      forward = current.next; 
      current.next = previous; 
      previous = current; 
      current = forward; 
     } 
    return previous; 
} 

Toute entrée sur ce serait utile

Merci !!!

+0

il y a beaucoup d'exemples. avez-vous google? – DarthVader

+2

et qu'est-ce qui ne fonctionne pas? être plus descriptif du comportement – DarthVader

+0

10 -> 20 -> 30 est ma liste chaînée ... Après le reverse je reçois juste 10 – user1141584

Répondre

0

Je suis sûr qu'il devrait être

return root = reverse(root); 

(Votre logique inverse est correct, mais si le root pointe encore à l'ancienne racine de la liste, vous allez vous retrouver avec un 1 élément liste liée.)

0

devoirs ... En supposant

écrire des tests simples: liste des 0 articles, liste des articles 1, liste des articles 2, liste de 10 articles. Assurez-vous que chacun d'eux fonctionne - réduira l'erreur et apprendra à écrire des tests unitaires.

+0

Merci pour vos contributions. Essayait de le pratiquer pour des interviews. La méthode inverse est la classe Linkedlist. J'ai créé un objet de LinkedList. (LinkedList l1 = nouveau LinkedList();) – user1141584

+0

10 -> 20 -> 30 est ma liste liée ... Après le revers je reçois juste 10 – user1141584

+1

Alors considérez-vous échoué l'interview avec les commentaires suivants: tests manqués pour commencer, après avoir obtenu L'indication explicite pour le test n'a pas suivi et n'a toujours pas réussi à tester le code. (Le commentaire attendu était quelque chose comme: "tests pour 0,1 éléments OK, 2 - a échoué ... et voici pourquoi ..."). –

0

Etes-vous sûr d'utiliser la valeur retournée de reverse() pour faire votre itération au lieu de root?