salve ragazzi, in vista degli esami mi sto. esercitando con il. linguaggio C e sto provando ad implementare le liste concatenate ma mi sono imbattuto in un problemino che sono sicuro sia banale ma non riesco a risolverlo:
praticamente quando vado a stampare la mia sequenza di nodi (si tratta di linked lists) il compilatore stampa solo il valore del nodo di testa, andando a fare un poi di debug mi sono reso conto che il problema potrebbe non essere la funzione che stampa i nodi in sequenza bensì quella che crea diversi nodi e li lega alla head (lista_in() ) poiché nel debugger viene visualizzato solo il valore dei primi due nodi (testa e successivo) dopodiché appare un errore se provo a visualizzare quello dopo.
potete aiutarmi? incollo il codice
praticamente quando vado a stampare la mia sequenza di nodi (si tratta di linked lists) il compilatore stampa solo il valore del nodo di testa, andando a fare un poi di debug mi sono reso conto che il problema potrebbe non essere la funzione che stampa i nodi in sequenza bensì quella che crea diversi nodi e li lega alla head (lista_in() ) poiché nel debugger viene visualizzato solo il valore dei primi due nodi (testa e successivo) dopodiché appare un errore se provo a visualizzare quello dopo.
potete aiutarmi? incollo il codice
C:
#include <stdio.h>
#include <stdlib.h>
struct nodo {
int val;
struct nodo* succ;
};
typedef struct nodo nodo;
nodo* lista_new(int);
nodo* lista_in(nodo*, int);
void lista_print(nodo*);
int main(){
nodo* head = lista_new(9);
head = lista_in(head, 10);
lista_print(head);
return 0;
}
void lista_print(nodo *head){
nodo *tmp_nd = head;
while(tmp_nd->succ != NULL){
printf("valore nodo : %d \n",tmp_nd->val);
tmp_nd = tmp_nd->succ;
}
}
nodo* lista_new(c){
nodo* head = malloc(sizeof(nodo));
head->val = c;
head->succ = NULL;
return head;
}
nodo* lista_in(nodo* head, int x){
nodo* tmp_nd = head;
for(int i; i < x; i++){
if (tmp_nd->succ == NULL) {
nodo* nd = malloc(sizeof(nodo));
nd->val = i;
tmp_nd->succ = nd;
tmp_nd = nd;
return head;
}
}
}