Autor
|
Tema: C -Error en lista enlazada simple (Leído 1,467 veces)
|
Niber
Desconectado
Mensajes: 11
|
Hola, estoy intentando hacer un lista enlazada simple, pero me da un error en ejecución cuando lee los datos. No se que he hecho mal. Podriais ayudarme? Gracias #include <stdio.h> #include <stdlib.h> //----ESTRUCTURAS----- struct contacto{ char nombre[30]; int tlf; }; struct agenda{ struct contacto datos; struct agenda *next; };
// ---FUNCIONES-- //int menu(); void addContacto(struct agenda *pinicio,struct agenda *pultimo); void mostrarAgenda(struct agenda *pinicio); // *************************************************** void main() { struct agenda *pinicio,*pultimo; pinicio=NULL; pultimo=NULL; int pos=0; //for (pos=0;pos<3;pos++) //{ addContacto(pinicio,pultimo); //} mostrarAgenda(pinicio); } //---------------------------------- void addContacto(struct agenda *pinicio,struct agenda *pultimo) { struct agenda *pnuevo=NULL //Asignar memoria pnuevo=(struct agenda *)malloc(sizeof(struct agenda)); if (pnuevo==NULL) printf("\n No hay memoria"); else { printf("\n Nombre: "); scanf(" %s",pnuevo->datos.nombre); fflush(stdin); printf("\n TLF: "); scanf("%d",pnuevo->datos.tlf); fflush(stdin); pnuevo->next=NULL; if (pinicio==NULL)//Si lista vacia { pinicio=pnuevo; pultimo=pnuevo; } else { pultimo->next=pnuevo; pultimo=pnuevo; }
} } //----------------------- void mostrarAgenda(struct agenda *pinicio) { struct agenda *paux; paux=pinicio; do{ if (paux!=NULL) { printf("\n %s",paux->datos.nombre); printf("\n %d",paux->datos.tlf); paux=paux->next; } }while (paux->next!=NULL); }
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Te sugiero esto: - indica cual es el error que te da. Decir que "te da un error" no ayuda a ayudarte. - En C, si quieres modificar una variable dentro de una funcion, tienes que pasar un puntero a esa variable y desreferenciar ese puntero al modificar el valor. Si no lo haces, y solo pasas la variable, estas modificando una copia. - si lo que quieres modificar es un puntero, tienes que pasar la direccion de memoria de ese puntero y recibirla usando un puntero a puntero. Cuando corresponda modificarlo, desreferenciar el puntero a puntero tal como se hace en general (lo dicho en el punto anterior).
|
|
« Última modificación: 21 Mayo 2019, 18:13 pm por CalgaryCorpus »
|
En línea
|
|
|
|
Niber
Desconectado
Mensajes: 11
|
Efectivamente estaba haciendo mal, el paso de referencia de un puntero (entre otras cosas) Después de darle bastantes vueltas he conseguido que funcione. Gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda lista simple enlazada C
Programación C/C++
|
netca
|
3
|
3,845
|
16 Agosto 2012, 00:06 am
por twins
|
|
|
[Resuelto]Duda lista simple enlazada en C
Programación C/C++
|
Zelandya
|
4
|
3,501
|
30 Agosto 2012, 05:41 am
por Zelandya
|
|
|
Insertar un elemento ordenadamente en una lista enlazada simple
Programación C/C++
|
NathanD
|
4
|
26,599
|
27 Abril 2013, 14:25 pm
por NathanD
|
|
|
borrar elemento de la lista enlazada simple
Programación C/C++
|
d91
|
2
|
3,280
|
9 Junio 2014, 13:44 pm
por d91
|
|
|
Lista enlazada simple – listas ligadas [C]
Programación C/C++
|
DanielPy
|
3
|
2,837
|
9 Junio 2015, 17:38 pm
por ivancea96
|
|