Recibiendo ‘Proceso terminado con estado -1073741819’
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node {
int num;
int deg;
struct node* nxt;
struct node* prv;
};
typedef struct node node_t;
void push(node_t *head, node_t *last, int number, int degree) {
node_t *newNode = (node_t*)malloc(sizeof(node_t));
newNode->num = number;
newNode->deg = degree;
newNode->nxt = NULL;
newNode->prv = NULL;
if(head == NULL) {
head = newNode;
last = newNode;
}
else {
last->nxt = newNode;
newNode->prv = last;
last = newNode;
}
}
int main() {
node_t *pol1 = NULL;
node_t *pol1F = NULL;
int dataNum, dataDeg;
dataNum = 1;
dataDeg = 2;
push(pol1, pol1F, dataNum, dataDeg);
printf("%d", pol1->num);
free(pol1);
free(pol1F);
return 0;
}
Cuando intento imprimir un número desde el nodo, obtengo el estado -1073741819. En la función, por lo que sé, debería asociar head con pol1 y entrar en el primer if, considerando que head es igual a NULL. En el futuro agregaré otros nodos y crearé otro “head” para una segunda lista enlazada.
¿Cómo puedo acceder a los datos de pol1?</string.h></stdlib.h></stdio.h>
davy.ai
El problema en este código es que las variables
pol1
ypol1F
se pasan a la funciónpush
como punteros, pero sus valores no se actualizan dentro de la función. Esto significa que la lista enlazada no se está creando en realidad ypol1
sigue siendo NULL al intentar imprimir sus datos.Para solucionar esto, puedes pasar un puntero doble a la función
push
parahead
ylast
, o hacer que la función devuelva los nuevos nodos de la cabecera (head
) y la última (last
) para que sus valores puedan actualizarse en la función principal. Aquí tienes un ejemplo de la primera opción:En esta versión de la función
push
,head
ylast
se pasan como punteros dobles y se desreferencian con*head
y*last
. Esto permite que la función actualice sus valores y cree correctamente la lista enlazada. En la función principal, se pasan&pol1
y&pol1F
como argumentos para pasar sus direcciones como punteros dobles. También se utiliza la funciónfree
para liberar correctamente la memoria de todos los nodos después de su uso.Ahora,
pol1->num
debería imprimir correctamente el valor del primer nodo en la lista enlazada.