Salve utenti di HTML.
Ho diversi problemi col sorgente di un programmino (sintetizzato al massimo).. potete dargli un occhiata?:
codice:#include<stdio.h> #include<stdlib.h> typedef struct s1 { int ele; struct s1 *punt; } vagone; typedef vagone *punt; void crea_lista(punt P1,punt P0,int N); void stampa(punt PS,int N); main() { punt P1=NULL,P0=NULL,PS=NULL; int N,I,cont=0; printf("Quanti valori vuoi inserire?: "); scanf("%d",&N); printf("%d",&P1); crea_lista(P1,P0,N); PS=P1; stampa(PS,N); system("PAUSE"); } void crea_lista(punt P1,punt P0,int N) { int I, cont=0; for (I=0;I<N;I++) { P1=(vagone*)malloc(sizeof(vagone)); printf("Inserisci valore: "); scanf("%d",&(P1->ele)); if (cont=0) { P1->punt=NULL; cont=cont+1; } else P1->punt=P0; P0=P1; system("PAUSE"); printf("%d\n",P1->punt); } } void stampa(punt PS,int N) { int I; for (I=0;I<N;I++) { printf("%d\n",PS->ele); PS=PS->punt; } }
Che fa questo programma?
Crea una lista concatenata formata da N record vagone.
Vagone contiene (proprio per semplicizzare il problema) un intero (ele) e un puntatore alla stesso tipo di struttura (*punt: che conterrà l' indirizzo della struttura precedente o NULL nel caso che sia la prima struttura).
Oltre questo record, utilizzo altri 3 puntatori alla stessa struttura del record vagone: P0, P1, PS;
Questi occorrono giusto per creare le liste (è P1 che le alloca con malloc) e fare in modo che siano concatenate (P0).
PS invece è utilizzato univocamente per la stampa in modo tale che a ritroso (ovvero dall' ultimo record) arrivi al primo (caratterizzato dal punt. NULL).
Il programma in sè funziona se rimuovo i sottoprogrammi procedurali, aihmè, se metto le procedurali non funziona..
Potete correggermi questo progetto?
Grazie


Rispondi quotando