Tengo el problema en una lista doblemente enlazada que no me imprime al reves, es decir de abajo a arriba, es más se suele colgar al final. Y no pillo el fallo:
Gracias desde ahora y saludos!.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct lista_elementos
{
char elem[40];
struct lista_elementos *sig;
struct lista_elementos *ant;
};
typedef struct lista_elementos nodo;
void crear(nodo *registro,nodo *fin,nodo *anterior);
void mostrar_abajo(nodo *pt);
void mostrar_arriba(nodo *pt);
int main()
{
nodo *prin,*fin;
prin=(nodo*)malloc(sizeof(nodo));
fin=(nodo*)malloc(sizeof(nodo));
crear(prin,fin,NULL);
puts("\n");
mostrar_abajo(prin);
puts("\n");
mostrar_arriba(fin);
}
void crear(nodo *registro,nodo *fin,nodo *anterior)
{
printf("Dato (Escribir LEOSANSAN para terminar): ");
scanf(" %s",registro->elem);
if (strcmp(registro->elem,"LEOSANSAN")==0)
{
registro->sig=NULL;
registro->ant=anterior;
fin=registro;
}
else
{
registro->sig=(nodo*)malloc(sizeof(nodo));
registro->ant=anterior;
crear(registro->sig,fin,registro);
}
}
void mostrar_abajo(nodo *pt)
{
if (pt->sig!=NULL)
{
printf("%s ",pt->elem);
mostrar_abajo(pt->sig);
}
}
void mostrar_arriba(nodo *pt)
{
if (pt->ant==NULL)
printf("%s",pt->elem);
else
{
printf("%s ",pt->elem);
mostrar_arriba(pt->ant);
}
}
Gracias desde ahora y saludos!.