ciao a tutti, vi chiedo aiuto perchè sono ai primi esempi di liste concatenante e trovo errori che non riesco a risolvere.
più che la lista in sè il problema è che non riesco a compilare ed eseguire correttamente questi script. entrambi creano ed inizializzano una lista concatenata semplice, soltanto che il secondo lo fa effettuando una chiamata di funzione con la lista passata per puntatore.
primo script: crea una lista di 10 elementi inizializzandoli con un ciclo for, la struttura dati si chiama node; la compilazione va a buon fine, ma si blocca l'esecuzione (errore di windows)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node {
int dato;
struct node *next;
};
main () {
struct node *curr, *head;
int i;
head = NULL;
for(i=1;i<10;i++) {
head=malloc(sizeof(struct node));
curr->dato=(i*2);
curr->next=head;
head=curr;
}
curr=head;
i=1;
while(curr) {
printf("componente numero %d, dato: %d",i,curr->dato);
printf("\n\n");
i++;
curr=curr->next;
}
system("PAUSE");
}
secondo script: stessa cosa con chiamata di funzione e passaggio per puntatore. non riesco a compilarlo.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void lista_aggiungi (node **p, int i) {
node *n = malloc(sizeof(node));
n->dato=i;
n->next=*p;
*p=n;
return;
}
struct node {
int dato;
struct node *next;
}
main() {
node *n = NULL;
lista_aggiungi(&n,45); // dato 0
lista_aggiungi(&n,50); // dato 1
lista_aggiungi(&n,60); // dato 2
/*
do {
printf("dato %d/n", n->dato);
n=n->next;
}
while(next);
system("PAUSE");*/
}
PS: uso DevC++