if(num < lista->numero) {
nodo_aux->numero = num;
nodo_aux->siguiente = lista->siguiente;
lista->siguiente = nodo_aux;
cont = 0;
}
lista = lista->siguiente;
si tienes que ordenar los numeros de menor a mayor, entonces si entras en este
if tendras que poner el numero
antes del nodo de la lista en el que te encuentres. esto se complica puesto que seguro mas de una vez necesitaras insertar un nodo en medio de la lista, y diria que para hacerlo necesitas una lista doblemente enlazada, con un puntero que apunte al nodo anterior y otro al siguiente:
struct lista {
int num;
struct lista *anterior;
struct lista *siguiente;
};
de esta manera, en el
if deberias hacer algo asi:
if(num < lista->numero) {
nodo_aux->numero = num;
nodo_aux->siguiente = lista; //enlazas con el nodo siguiente
nodo_aux->anterior=lista->anterior; //enlazas con el nodo anterior
lista->anterior->siguiente=nodo_aux; //al nodo anterior al nodo creado, actualizas su 'siguiente' al nodo nuevo creado
lista->anterior=nodo_aux; //al nodo posterior al nodo creado, actualizas su 'anterior' al nodo nuevo creado
cont = 0;
}
lista = lista->siguiente;
claro que si lo haces asi, entonces deberas modificar el resto de codigo que tengas teniendo en cuenta el nuevo puntero al nodo anterior. tampoco he tenido en cuenta el comprobar si colocas el numero al principio de la lista, por lo que entonces tienes que hacer que 'anterior' apunte a NULL, igual que si es al final tienes que hacerlo pero con 'siguiente', pero espero que la idea te sirva.
nodo_aux = inicio;
return nodo_aux;
luego esto de aqui no tiene nada que ver con el error, pero no entiendo por que no haces directamente:
return inicio;
saludos!
EDITO: pensandolo mejor, otra opcion seria que declararas otro puntero auxiliar que apuntara al nodo anterior en el que te encuentres. de esta manera:
LISTA *nodo_aux=NULL, *inicio=NULL, *anterior=NULL;
int cont = 1;
//...
if(num < lista->numero) {
nodo_aux->numero = num;
nodo_aux->siguiente = lista;
anterior->siguiente = nodo_aux;
cont = 0;
}
anterior=lista;
lista = lista->siguiente;
aunque aqui tampoco tengo en cuenta los casos especiales como insertar al principio o al final. pero bueno espero que te sirva, un saludo!