我有一个链接的粒子列表。我想让这些粒子一个接一个地移动。所以为了做到这一点,我需要遍历链表中的每个粒子,当它到达最后一个粒子时,我希望它返回到第一个粒子。但我的程序没有这样做。链表不正确循环
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;
}
大。那么它在做什么?你做了什么来调试这个问题? –
我已经添加了一个printf来查看循环停止的位置,并在寿命= 1时停止,然后程序崩溃。它不回去头,这意味着它没有去if语句在所有 – livelaughlove
下一步是建立为什么它坠毁。你应该在调试器中运行以查明。 –