PDA

View Full Version : [C] Creazione di una lista a partire da un vettore (Ricorsiva)


xbubbax
03-03-2008, 10:56
Non capisco perchè questo programma funziona perfettamente su un computer mentre su tutti gli altri computer dove l'ho provato stampa soltanto " NULL". Cosa c'è di sbagliato?

#include <stdio.h>
#include <stdlib.h>

struct nodo{
int data;
struct nodo *next;};

typedef struct nodo nodo;
typedef struct nodo *listaPtr;

listaPtr Creazione(listaPtr L, int v[], int n, int i){

listaPtr nuovo;

nuovo=(listaPtr)malloc(sizeof(nodo));
nuovo->data=v[i];
nuovo=nuovo->next;
if(i==n-1){
nuovo=NULL;}else{
return Creazione(L,v,n,i+1);}
return nuovo;}



void Stampa(listaPtr L){

while(L!=NULL){
printf(" %d ->", L->data);
L=L->next;}
printf(" NULL\n");
}

int main(void){

int i=0;
int n=0;

printf("Inserisci la lunghezza del vettore v:\n");
scanf("%d", &n);

int v[n];

printf("Inserisci gli n elementi del vettore v:\n");

for(i=0;i<n;i++){
scanf("%d", &v[i]);}

listaPtr L;
L=NULL;

i=0;

L=Creazione(L,v,n,i);
Stampa(L);

system("PAUSE");
return 0;}

kernel::panic
03-03-2008, 11:15
Non ho provato a compilarlo ma a prima vista mi sa che la riga


main {
...
int v[n];
}


non compili in quanto n non è costante. dovresti fare:


int *v = (int *)calloc(n,sizeof(int));
if(v) {
...
free(v);
}


Byez ;)

xbubbax
03-03-2008, 12:03
nono, a compilare compila. solo che su un computer funziona bene, su tutti gli altri computer dove l'ho provato invece stampa solo NULL