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