17.5. Listas infinitas

No hay nada que impida a un nodo hacer referencia a un nodo anterior de la lista, incluido el mismo. Por ejemplo, esta figura muestra una lista con dos nodos, uno de los cuales apunta a si mismo:

Sin título

Si llamamos a imprimeLista sobre esta lista, entrara en un bucle infinito. Si llamamos a imprimeAlReves, lo hará de forma infinitamente recursiva. Este tipo de comportamiento da lugar a que sea muy difícil trabajar con listas infinitas.

Sin embargo, en ocasiones resultan útiles. Por ejemplo, podríamos representar un numero como una lista de dígitos y usar una lista infinita para representar una fracción repetida.

A pesar de todo, es un problema que no podamos probar que imprimeLista e imprimeAlReves puedan terminar correctamente. Lo mejor que podemos hacer es armar que si la lista no contiene bucles, estos métodos podrán terminar".

Este tipo de afirmaciones se conocen como condiciones previas. Imponen una restricción sobre uno de los parámetros y describen el comportamiento del metodo si la restricción se satisface. Veremos mas ejemplos mas adelante.

0