UTNianos

Versión completa: Ayuda con programa de Listas
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola gente, aca haciendo programas de listas, me volvi loco haciendo este que hace una funcion de insertar nodos ordenados alfabeticamente de A a la Z ,
copie el programa tambine aca http://www.copiatelo.com/index.php?show=m251242cf
el programa no me compila ni ahi y la verdad que ya me marie, si alguno puede darle una hojeada estaria mas que agradecido
un saludo a todos =)


/*Realizar un programa en C que implemente una aplicacion que permita ingresar por teclado datos en una LSE.
Los datos de la LSE seran datos personales de los alumnos de este curso: Nombre y Apellido (string de 30 caracteres
denominado apeNom), Legajo(long leg), Telefono (long tel)
Su programa debera realizar el ingreso de datos contemplando como condicion de salida la deteccion de la cadena "fin"
en lugar de un apeNom valido.
Los datos deberan ser guardados alfabeticamente segun apeNom en un archivo denominado personas.utn ubicado en el directorio de trabajo al finalizar el proceso*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct datos{
char ApeNom[30];
long leg;
long tel;
struct datos *next;
};
typedef struct datos DATOS;

void insertar_nodo_ordenado(DATOS **,DATOS *); //la funcion recibe la direccion del header y el nodo a agregar

int main()
{
DATOS *H;
H=NULL;
DATOS buffer;
printf("\nIngrese el nombre completo del estudiante ");
scanf("%s",buffer.ApeNom);
while(strcmp(buffer.ApeNom,"fin")!= 0)
{
insertar_nodo_ordenado(&H,&buffer);
printf("\nIngrese el nombre completo del estudiante ");
scanf("%s",buffer.ApeNom);
}
return 0;
}

void insertar_nodo_ordenado(DATOS **H,DATOS *buffer)
{
DATOS *nuevo;

if((*H)==NULL)
{
nuevo=(DATOS*)malloc(sizeof(DATOS));
strcpy(nuevo->ApeNom,buffer->ApeNom); //copio el nombre en el nuevo nodo
*H=nuevo;
nuevo->next=NULL;
}
else{

if((strcmp((*H)->ApeNom,buffer->ApeNom))>0)
{
nuevo=(DATOS*)malloc(sizeof(DATOS));
strcpy(nuevo->ApeNom,buffer->ApeNom);
nuevo->next=*H;
*H=nuevo;
}
else(((strcmp(*H->ApeNom,buffer->ApeNom))<0) || (strcmp(*H->ApeNom,buffer->ApeNom))==0))
{
DATOS *I;
I=*H;
while(I->next != NULL)
{
if((strcmp(I->ApeNom,buffer->ApeNom))>0)
{
nuevo=(DATOS*)malloc(sizeof(DATO));
strcpy(nuevo->ApeNom,buffer->ApeNom);
nuevo->next=i->next;
i->next=nuevo->next;
}
I=I->next;
}
//si sale del while es porque el nodo va al final de la lista
nuevo=(DATOS*)malloc(sizeof(DATO));
strcpy(nuevo->ApeNom,buffer->ApeNom);
I->next=nuevo;
nuevo->next=NULL;
}

}

}

}

}


URLs de referencia