Te falto considerar que pasa cuando indice->num>=maximo es falso, el bucle se vuelve infinito ya que no cambias de nodo
Ostras es verdad, se me olvidaba pasar de nodos. Creo que tras tantos cambios que hice dejé sin ponerlo.
Y gracias, porque ya funciona. Usaba la función sin dobles punteros porque en un ejercicio muy parecido que ya tengo hecho (en vez de eliminar los mayores al nº introducido, tengo que eliminar ese nº todas las veces que aparezca) lo hice sin dobles punteros y como funcionó, pues pensé "digo yo que si funiona así, simplemente cambio el interior de la función un poco para que elimine los mayores y ya". Pero nanai jajaja
Finalmente, no se suponía que yo pasaba por referencia la lista? porque usaba un puntero *lst al principio de ella y luego la iba recorriendo. Y cuándo debería usar una función que llame a **lst y no *lst? Según lo que veo, la única que hace uso de **lst es InsertarNodoFinal(NODO **lst, int num) y es porque modifica la lista en sí, insertando nodos. Las de MostrarLista(NODO *lst) y NumeroNodos(NODO *lst) como solo la recorren no necesitan modificar los nodos y sólo necesitan un puntero simple no?
Qué lio xD Pero menos mal que sois unos máquinas.
PD:
Un numero racional se caracteriza por estar expresado con un denominador y un numerador.
Saludos
Lol wut? Creo que has mirado una respuesta antigua y no la última XD