Buenas, mi problema es el siguiente. Tengo una lista simplemente enlazada que la inicializo con los elementos de un array generados aleatoriamente. Esos elementos se insertan sin problema en la lista, pero cuando lo inserto manualmente, por el teclado por ejemplo, no se añade a la lista (o si se añade, no se visualiza). A ver si me podéis ayudar.
La estructura:
typedef struct lista{
int numero;
struct lista *siguiente;
}LISTA;
La función para crear la lista
LISTA *crearLista(int num)
{
LISTA *lista;
lista
= (LISTA
*) malloc( sizeof(LISTA
) );
lista->numero= num;
lista->siguiente= NULL;
return lista;
}
La función de añadir un elemento:
LISTA *anyadirElementoAlPrincipio(int num, LISTA *lista)
{
LISTA *nodo_nuevo;
nodo_nuevo
= (LISTA
*) malloc( sizeof(LISTA
) ); if(nodo_nuevo == NULL)
printf("\nNo hay sitio para más números.\n");
else
{
nodo_nuevo->numero = num;
nodo_nuevo->siguiente= lista;
}
return nodo_nuevo;
}
La función de ver la lista entera:
void mostrarLista(LISTA *lista)
{
printf("%d\n", lista
->numero
);
if(lista->siguiente != NULL)
mostrarLista(lista->siguiente);
}
En el main el uso de la función de añadir un elemento es exactamente igual con los elementos del array y con el introducido desde el teclado... Si ayudara en algo, decídmelo y lo pongo también.
Gracias de antemano y saludos.
PD: aprovecho para preguntar una duda que me ha surgido, cuando se llama a la función de añadir elementos, ¿no habría que liberar con
free() el espacio reservado para el nodo que se usa en la función?