2011-02-13 6 views

Répondre

16

La logique de la duplication d'une liste chaînée est récursive et sur la base des observations suivantes:

  1. Le clone de la liste vide est la liste vide.
  2. Le clonage d'une liste avec le premier nœud x et les nœuds restants xs est une copie de x ajoutée à un clone de xs.

Si vous encodez la liste chaînée en C++, cela peut être très propre:

struct Node { 
    int value; 
    Node* next; 
}; 

Node* Clone(Node* list) { 
    if (list == NULL) return NULL; 

    Node* result = new Node; 
    result->value = list->value; 
    result->next = Clone(list->next); 
    return result; 
} 
+2

C'est vraiment un beau morceau de code! – LunaticSoul

5

Savez-vous comment ajouter un nouveau nœud à une liste existante? Et comprenez-vous comment parcourir (c'est-à-dire parcourir) une liste? La copie d'une liste consiste simplement à effectuer ces deux opérations simultanément (traverse ListA, pour chaque élément, copie l'élément et l'ajoute en tant que nouveau nœud à ListB).

Questions connexes