I have a linked list of particles. I would like to make these particles move one-by-one. So in order to do that I need to loop through every particle in my linked list, and when it reaches the last particle, I would like it to go back to the first particle. but my program is not doing that.

```
int particle_update(struct particle **head ){
    struct particle *current = *head;
    struct particle *next;
    printf("particle_update\n");

    while(current != NULL){
        while(current != NULL && current->lifespan >=0){
            current->lifespan --;

            current->pos.y = current->pos.y + (current->spd.y * current->dir.y);
            current->pos.x = current->pos.x + (current->spd.x * current->dir.x);
            current->pos.z = current->pos.z + (current->spd.z * current->dir.z);

            current = current->next;
            if (current == NULL)
                current = *head;
        }
    }

    particle_destroy(head);
    return 0;
}

```