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