El tema de las listas en C me esta volviendo loco, a ver si podéis ayudarme en el siguiente error.
Tengo la siguiente lista abierta, el caso es que el programa me compila pero supuestamente en la lista solo esta el primer elemento, a la hora de mostrármela solo me muestra el 4.
Código:
#include <stdio.h>
#include <stdlib.h>
typedef struct listacompleta {
int dato;
struct listacompleta *next;
}lista;
lista *primero;
void add_nod(int dato){
lista *nuevo,*aux;
nuevo = (lista *) malloc (sizeof(lista));
nuevo->dato = dato;
nuevo->next = NULL;
if(primero == NULL){
aux = primero;
primero = nuevo;
} else {
aux = primero;
while(aux != NULL){
aux = aux->next;
}
aux = nuevo;
}
}
void see_list(lista *primero){
lista *auxiliar;
int i;
auxiliar = primero;
while (auxiliar!=NULL) {
printf( "%d\n",auxiliar->dato);
auxiliar = auxiliar->next;
i++;
}
if (i==0) printf( "\nLa lista está vacía!!\n" );
}
main(){
primero = NULL;
add_nod(4);
add_nod(3);
add_nod(5);
see_list(primero);
}
Un saludo.#include <stdlib.h>
typedef struct listacompleta {
int dato;
struct listacompleta *next;
}lista;
lista *primero;
void add_nod(int dato){
lista *nuevo,*aux;
nuevo = (lista *) malloc (sizeof(lista));
nuevo->dato = dato;
nuevo->next = NULL;
if(primero == NULL){
aux = primero;
primero = nuevo;
} else {
aux = primero;
while(aux != NULL){
aux = aux->next;
}
aux = nuevo;
}
}
void see_list(lista *primero){
lista *auxiliar;
int i;
auxiliar = primero;
while (auxiliar!=NULL) {
printf( "%d\n",auxiliar->dato);
auxiliar = auxiliar->next;
i++;
}
if (i==0) printf( "\nLa lista está vacía!!\n" );
}
main(){
primero = NULL;
add_nod(4);
add_nod(3);
add_nod(5);
see_list(primero);
}