Cavolo, non riesco a trovare la soluzione!

ho creato la mia struttura

typedef struct lista{
int val;
struct lista *p; //puntatore
}


quando leggo il valore e è maggiore di zero al posto di visualizzarlo lo devo salvare all'interno della mia lista.

if (valore > 0)
{
p = (struct lista*)malloc(sizeof(struct lista)); //Chiedo la memoria

p ->val = valore; //Valore che ho letto messo nella struttura lista in val

Ma non riesco a capire come fare a far puntare il puntatore quando leggerà il numero successivo ?___?