Código
#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->valor = pvalor; nodo->siguiente = NULL; return nodo; } listaLigada *nuevaListaLigada(){ 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); 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