Hola buenos dias estoy intentando implementar una lista en c, mi progrma compila pero se crashea y no consigo el error, si me pudieran dar una mano por favor, arriba dejo mi codigo, gracias.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tNodo{
int valor;
struct tNodo *siguiente;
}Nodo;
typedef struct tLista{
int tamanio;
struct Nodo *primer;
struct Nodo *ultimo;
}listaLigada;
Nodo *nuevoNodo(int pvalor)
{
Nodo* nodo = (Nodo*)malloc(sizeof(Nodo));
nodo->valor = pvalor;
nodo->siguiente = NULL;
return nodo;
}
listaLigada *nuevaListaLigada(){
listaLigada *ll = (listaLigada*)malloc(sizeof(listaLigada));
ll->tamanio = 0;
ll->primer = NULL;
ll->ultimo = NULL;
return ll;
}
//operaciones CRUD
void add(listaLigada *ll, Nodo *pNodo){
if(ll->primer == NULL)
ll->primer = (struct Nodo*)pNodo;
else
ll->ultimo = (struct Nodo*)pNodo;
ll->ultimo = (struct Nodo*)pNodo;
ll->tamanio++;
}
Nodo *read(listaLigada *ll, size_t index){
if(ll->tamanio){
Nodo* exploradorLista = (Nodo*)(ll->primer);
int i = 0;
while(i++ <index)
exploradorLista = (Nodo*)(exploradorLista->siguiente);
return exploradorLista;
}
return NULL;
}
void update(listaLigada *ll, size_t index, int pValor){
if(ll->tamanio){
Nodo* exploradorLista = (Nodo*)(ll->primer);
int i = 0;
while(i++ <index)
exploradorLista = (Nodo*)(exploradorLista->siguiente);
exploradorLista->valor = pValor;
}
}
int main()
{
listaLigada *miLista = nuevaListaLigada();
Nodo * a = nuevoNodo(1);
Nodo * b = nuevoNodo(2);
Nodo * c = nuevoNodo(3);
add(miLista, a);
add(miLista, b);
add(miLista, c);
Nodo* re = read(miLista,1);
printf("%d\n", re->valor);
return 0;
}
Creo que el problema esta en esta instrucction en la funcion read()b]
exploradorLista = (Nodo*)(exploradorLista->siguiente);
Mi programa se crashea justo alli