Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aurquiel en 2 Julio 2018, 14:33 pm



Título: Lista ligadas se crashea my programa
Publicado por: aurquiel en 2 Julio 2018, 14:33 pm
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.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct tNodo{
  6.    int valor;
  7.    struct tNodo *siguiente;
  8. }Nodo;
  9.  
  10. typedef struct tLista{
  11.    int tamanio;
  12.    struct Nodo *primer;
  13.    struct Nodo *ultimo;
  14. }listaLigada;
  15.  
  16. Nodo *nuevoNodo(int pvalor)
  17. {
  18.    Nodo* nodo = (Nodo*)malloc(sizeof(Nodo));
  19.    nodo->valor = pvalor;
  20.    nodo->siguiente = NULL;
  21.    return nodo;
  22. }
  23.  
  24. listaLigada *nuevaListaLigada(){
  25.    listaLigada *ll = (listaLigada*)malloc(sizeof(listaLigada));
  26.    ll->tamanio = 0;
  27.    ll->primer = NULL;
  28.    ll->ultimo = NULL;
  29.    return ll;
  30. }
  31.  
  32. //operaciones CRUD
  33.  
  34. void add(listaLigada *ll, Nodo *pNodo){
  35.    if(ll->primer == NULL)
  36.        ll->primer = (struct Nodo*)pNodo;
  37.    else
  38.        ll->ultimo = (struct Nodo*)pNodo;
  39.    ll->ultimo = (struct Nodo*)pNodo;
  40.    ll->tamanio++;
  41. }
  42.  
  43. Nodo *read(listaLigada *ll, size_t index){
  44.    if(ll->tamanio){
  45.        Nodo* exploradorLista = (Nodo*)(ll->primer);
  46.        int i = 0;
  47.        while(i++ <index)
  48.            exploradorLista = (Nodo*)(exploradorLista->siguiente);
  49.        return exploradorLista;
  50.    }
  51.    return NULL;
  52. }
  53.  
  54. void update(listaLigada *ll, size_t index, int pValor){
  55.    if(ll->tamanio){
  56.        Nodo* exploradorLista = (Nodo*)(ll->primer);
  57.        int i = 0;
  58.        while(i++ <index)
  59.            exploradorLista = (Nodo*)(exploradorLista->siguiente);
  60.        exploradorLista->valor = pValor;
  61.    }
  62. }
  63.  
  64.  
  65. int main()
  66. {
  67.    listaLigada *miLista = nuevaListaLigada();
  68.    Nodo * a = nuevoNodo(1);
  69.    Nodo * b = nuevoNodo(2);
  70.    Nodo * c = nuevoNodo(3);
  71.    add(miLista, a);
  72.    add(miLista, b);
  73.    add(miLista, c);
  74.    Nodo* re = read(miLista,1);
  75.    printf("%d\n", re->valor);
  76.    return 0;
  77. }
  78.  
  79.  

Creo que el problema esta en esta instrucction en la funcion read()b]
exploradorLista = (Nodo*)(exploradorLista->siguiente);
Mi programa se crashea justo alli