Salve,
CelUtil *p, celula;
p = &celula;
Da maneira que você fez, celula é uma variável automática e será devolvida ao sistema quando a função terminar.
A maneira de alocar uma célula é
p = mallocSafe(sizeof(CelUtil);
ou
p = mallocSafe(sizeof *p);
Veja as anotações da aula 09, logo no começo, há uma função insere onde é feito esse erro.