17.7. Modificar lista

Hay dos formas de modificar una lista enlazada. Obviamente, podemos cambiar la carga de uno de los nodos, pero las operaciones mas interesantes son las que añaden, quitan o reordenan los nodos.

Como ejemplo, escribamos un metodo que quite el segundo nodo de la lista y devuelva una referencia al nodo quitado:

   1: def eliminaSegundo(lista):
   2:     if lista == None: return
   3:     primero = lista
   4:     segundo = lista.siguiente
   5:     # hacer que el primer noda apunte al tercero
   6:     primero.siguiente = segundo.siguiente
   7:     # separar el segundo nodo del resto de la lista
   8:     segundo.siguiente = None
   9:     return segundo

De nuevo, estamos usando variables temporales para hacer mas legible el código.


Así es como usamos este método:




   1: >>> imprimeLista(nodo1)
   2: 1 2 3
   3: >>> eliminado = elimnaSegundo(nodo1)
   4: >>> imprimeLista(eliminado)
   5: 2
   6: >>> imprimeLista(nodo1)
   7: 1 3

 

El diagrama de estado nos muestra el efecto de la operación:

 

 

Sin título

 

¿Que ocurriría si llamáramos a este metodo y pasáramos una lista de un único elemento (un singleton)?

¿Que sucederá si pasáramos una lista vacía como argumento?

¿Hay una condición previa para este metodo? Si es así, será algo razonable establecer un metodo para manejar una violación de la condición previa.

0