Fala mano, tudo bem?
Primeiro tu tem que ter em mente que pra remover a entrada X de uma lista o programa Cria um vetor menor, passa os valores do ventor "antigo" até o índice que você quer remover, "pula" o índice X e depois continua o posicionamento.
Tu vai precisar de uma função vazia que receba como parâmetros o ponteiro global da tua struct, o tamanho da lista e a posição.
Antes de codificar a função de remoção seria interessante você configurar uma condicional dentro do caso que você quer trabalhar, que diz que SE o tamanho da lista for Zero, ele DIZ que a lista está vazia; SE NÃO, chama-se a função com os parâmetros citados acima.
Ok, agora pra função, você pode codificá-la em 4 passos:
1 - Tu vai criar (e alocar memória) para um vetor com uma posição a menos. Se tu puder usar c++, inclua a biblioteca <new>. porque ai tu só precisa escrever tua struct, APONTAR tua lista, criar o novo vetor (ja alocando a memória com o new) com uma posição a menos (tu APONTA o tamanho da lista menos uma posição).
2 - Agora você passa os elementos da lista antiga para a nova, ATÉ o elemento desejado.
Tu faz isso definindo uma variável contadora, abrindo um laço de repetição que começa em 0 e termina no tamanho da lista que tu acabou de criar. Dentro do escopo desse laço você cria uma condicional. SE o contador for menor que a posição que tu quer remover: Tu passa o mesmo valor da lista antiga, tudo normal. SE NÃO: tu passa o valor da frente (contador mais 1, a frente), que substitui X.
3 - Agora tu precisa atualizar o ponteiro da sua lista, que deve apontar pra esse lista nova que tu criou.
4 - E também atualizar o PONTEIRO do tamanho da sua nova lista, que é o tamanho da lista -1.
Qualquer coisa chama que nóis descomplica, abraço