2011-02-13 15 views

Respuesta

16

La lógica para la duplicación de una lista enlazada es recursivo y en base a las siguientes observaciones:

  1. El clon de la lista vacía es la lista vacía.
  2. El clon de una lista con el resto de nodos xs primer nodo x y es una copia de x antepuesto a un clon de xs.

Si codifica la lista enlazada en C++, esto puede ser muy limpio:

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

Este es realmente un buen trozo de código! – LunaticSoul

5

¿Entiende cómo añadir un nuevo nodo a una lista existente? ¿Y comprende cómo recorrer (es decir, iterar) una lista? Copiar una lista es simplemente realizar ambas operaciones simultáneamente (recorrer ListA; para cada elemento, copiar el elemento y agregarlo como un nuevo nodo a ListB).

Cuestiones relacionadas