Pues tengo un problema estoy haciendo una pratica, pero no me queda tengo un problemita el problema es a la hora de imprimir mi lista circular les dejare el codigoo:
Lo que hace el programa es insertar estructuras de tipo alumno en mi lista circular:
Código:
typedef struct persona
{
char nombre[20];
char apellido[20];
int edad;
float sueldo;
} item;
typedef struct NodoLC
{
item dato;
struct NodoLC *siguiente;
} NODOLC;
Y luego ingreso los datos en otra funcion:
Código:
void ingresar()
{
system("CLS");
printf("Nuevo registro de alumno creado:\n\n");
item *alumno;
alumno=(item*)malloc(sizeof(item));
alumno->nombre=(char*)malloc(30*sizeof(char));
alumno->apellido=(char*)malloc(30*sizeof(char));
printf("Nombre: ");
gets(alumno->nombre);
printf("\n\nApellido: ");
gets(alumno->apellido);
printf("\n\nBoleta: ");
scanf("%d",&alumno->boleta);
printf("\n\nCalificacion: ");
scanf("%d",&alumno->calif);
insertarDLC(&cab,alumno);
free(alumno);
}
y mis funciones de insertar e imprimir respectivamente:
Código:
void insertarDLC(NODODLC **cab,item *elem)
{
NODODLC *aux=(NODODLC*)malloc(sizeof(NODODLC));
aux->dato.nombre=elem->nombre;
aux->dato.apellido=elem->apellido;
aux->dato.boleta=elem->boleta;
aux->dato.calif=elem->calif;
aux->sig=aux->ant=aux;
aux->sig=*cab;
if(*cab)
{
aux->sig=(*cab)->sig;
(*cab)->sig=aux;
}
*cab=aux;
}
Código:
void imprimirDLC(NODODLC *cab)
{
NODODLC *ptr=cab;
int contador=1;
if(cab==NULL)
{
printf("La lista esta vacia");
return;
}
for(; ptr;ptr=ptr->sig,contador++)
{
printf("%d.-",contador);
printf("\tNombre: %s \n",ptr->dato.nombre);
printf("\tApellido: %s \n",ptr->dato.apellido);
printf("\tBoleta: %d \n",ptr->dato.boleta);
printf("\tCalificacion: %d \n",ptr->dato.calif);
}
}
Espero alguien me pueda ayudar gracias!!!!