Lista ligadas se crashea my programa

Iniciado por aurquiel, 2 Julio 2018, 14:33 PM

0 Miembros y 1 Visitante están viendo este tema.

aurquiel

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