Devi controllare che p sia stato allocato (non sia 0) e, quindi, controllare se esiste l'elemento id
codice:
if (p) {

   /* p è stato allocato, controllo se esiste id */
   /* Suppongo che id debba essere diverso da 0 perchè esista un elemento */

   if (p->id) {

      /* C'è un elemento */

   } else {

      /* Non c'è nessun elemento */

   }
} else {

   /* p non è stato allocato */

}
Se, invece, un ID 0 non significa assenza di elemento, devi gestire la cosa in altro modo, ma qui lo sai solo tu.


Ciao.