Exclusão de elementos

Boa tarde gente, estou implementando uma fila de prioridade e está dando uns erros, os métodos abaixo são remover elementos que retorna NULL se não tiver nenhum elemento válido na fila e caso contrário, retira o primeiro elemento válido da lista, coloquei o valor NULL na posição correspondente desse elemento no ponteiro arranjo e retornei o endereço do respectivo elemento.

Como não posso liberar a memória do elemento eu fiz uma função devolverNó para colocar no inicio da minha fila, caso o usuário precise usar. Mas nesse método eu posso colocar ele no inicio da minha lista f ou f->fila ou só coloco NULL na posição que ele foi retirado e não libero a memória dele ? nesse método fiquei em dúvida.

//Lista de disponíveis
void devolverNo(PFILA f, int j){
     f->arranjo[j]->prox = f->fila;//Colocar no inicio da fila.
     f->fila = j;
} /* devolverNo */


PONT removerElemento(PFILA f){
  PONT resposta = NULL;
  PONT* arranjo; //Armazena endereço de ponteiros.
  int elemento;
  PONT *ant;
 
  //Verificar se a fila possui algum ponteiro válido.
  if(f->fila == NULL) return resposta;
 
  //Retirar o primeiro elemento da lista.
  if(f->fila->ant == NULL)
 
  f->fila = f->arranjo[elemento]->prox;
 
  else f->arranjo[ant]->prox = f->arranjo[elemento]->prox;
 
  devolverNo(f,elemento);//Guardar na lista de disponíveis no inicio da fila.
 
  arranjo[elemento] = NULL
 
   return elemento;
 }