I have to develop an algorithm using linked list and struct in C, but I'm having a problem nullifying elements on the array. To clarify:

On the left side is the inital setup of the problem. On the right side is a likely output.
What I've done so far:
struct cel {
int pos;
struct cel *prox;
};
typedef struct cel bloco;
...
bloco *blocos;
scanf("%d",&numBlocos);
blocos = malloc(sizeof(bloco) * numBlocos);
for(i = 0; i < numBlocos; i++) {
blocos[i].pos = i;
blocos[i].prox = NULL;
}
The situation: Let's say for instance the user wants to put the second 'bloco' after the fourth (like on the img). Obviously I'd do:
blocos[4].prox = &blocos[2];
But how should I proceed to nullify at blocos[2] ? I mean, something like blocos[2] = NULL
Hope it's clear enough ! Thanks
EDIT ---
I got two new functions now:
bloco* busca(bloco *blocos,int pos, int numblocos)
{
int i;
for(i = 0; i < numblocos; i++) {
bloco *temp = &blocos[i];
while(temp != NULL && temp->pos != -1) {
if(temp->pos == pos) {
return temp;
}
//se nao vai pro proximo item linkado
temp = temp->prox;
}
}
return NULL;
}
And then:
void moveOnto(bloco *blocos, int ori,int dest,int numblocos)
{
if(ori == dest)
return;
bloco *origem = busca(blocos,ori,numblocos);
retornaOrigem(blocos,origem);
bloco *destino = busca(blocos,dest,numblocos);
retornaOrigem(blocos,destino);
bloco *temp = malloc(sizeof(bloco));
*temp = *origem;
destino->prox = temp;
origem->pos = -1;
}
Does it still not possible to nullify the origem pointer, or in that matter the blocos[2] to null, not doing origem->pos = -1 ?? I mean, they are pointers, so, why if I set origem = null it doesn't nullify the bloco[2] (which is the same address, I guess) ??