Muchas gacias amigo listo ahora entendí mejor :) ahora me pregunto como podria hacer, el código esta bien pero... me he dado cuenta que en mi funcion insertar_orden inserto los nodos, ahora mi duda seria como evitar que mi nuevo nodo no se perdiera al terminar mi función, porque es lo que pasa al terminar mi función mi nuevo nodo se pierde, mi segmentation fault se libro me podrian volver a ayudar plz.
Código:
#include<stdio.h>
#include<stdlib.h>
typedef struct n{
int dato;
struct n *sig;
}NODO;
NODO *raiz;
int inserta_orden(int nv) {
NODO *principal,*anterior,*nuevo_nodo;
nuevo_nodo=(NODO *)malloc(sizeof(NODO));
nuevo_nodo->dato=nv;
nuevo_nodo->sig=NULL;
principal=raiz;
anterior=raiz;
if (raiz==NULL) {
raiz=nuevo_nodo;
return 0;
}
else {
if (anterior==principal)
if (nuevo_nodo->dato < principal->dato) {
nuevo_nodo->sig=principal;
principal->sig=NULL;
return 0;
}
else {
principal->sig=nuevo_nodo;
return 0;
}
while (principal!=NULL && principal->dato < nuevo_nodo->dato) {
anterior=principal;
principal=principal->sig;
}
if (principal->sig!=NULL) {
anterior->sig=nuevo_nodo;
nuevo_nodo->sig=principal;
}
else
principal->sig=nuevo_nodo;
}
}
void imprimir() {
NODO *aux;
aux=raiz;
printf("\nImprime:");
while (aux->sig!=NULL) {
printf("\n%i",aux->dato);
aux=aux->sig;
}
}
main () {
int i,num;
raiz=NULL;
for (i=0;i<3;i++) {
printf("\nDame un numero ");
scanf("%i",&num);
inserta_orden(num);
}
imprimir();
return 0;
}
Desde ya muchas gracias :D