Salve a tutti,
ho un problema di incompatibilità ma non riesco a capire dove sbaglio.
Il codice sottostante mi da questo warning:

warning: assignment from incompatible pointer type

a questa linea nuovo_p->succ_p = cima_p;

codice:
/*definizione struttura lista*/
typedef struct elem_lista_t
{
  struct vertice_grafo 	*valore_p;
  struct elem_lista	*succ_p;
} elem_lista_t;

  /*
   * Crea pila 
   */
  cima_p = (elem_lista_t *)malloc(sizeof(elem_lista_t));
  cima_p->valore_p = vertice_p;	/* Assegno alla cima il vertice */
  cima_p->succ_p = NULL;
codice:
/*funzione chiamante*/
metti_su_pila (visita_vertici_p, cima_p);
codice:
/*inserisci su pila*/

void metti_su_pila (vertice_grafo_t 	*vertice_p,
		    elem_lista_t	*cima_p)
{
  elem_lista_t *nuovo_p; 

  nuovo_p = (elem_lista_t *)malloc(sizeof(elem_lista_t));
  nuovo_p->valore_p = vertice_p; 
  nuovo_p->succ_p = cima_p;         /*<-------- warning!!*/
  cima_p = nuovo_p;
}
Perché?
nuovo->succ_p è di tipo elem_lista, e cima_p pure... che incompatibilità c'è?
Qualcuno mi può aiutare??
Grazie!