我已经为此工作了大约 10 个小时。
int particle_remove(struct particle* p);
当我将“要删除的节点”的位置传递给函数时,如何找到头部?
我知道:
prev->next = curr->next;
free(curr);
如何找到要遍历的头部位置(curr -1)?
这是我到目前为止所拥有的:
int particle_remove(struct particle *p){
struct particle *curr = p;
struct particle *prev = *head; /* should point to the head */
if (p != NULL){
while (prev != curr){
prev=curr->next;
}
prev->next = curr->next;
free(curr);
}
return 0;
}
我已经经历了一百万次了,如果不将头节点位置的参数传递给函数,我想不出如何到达头节点。是否可以使用当前函数“签名”来执行此操作,还是必须添加对头部的引用?
好的,我已经通过创建一个新函数来解决这个问题,该函数需要销毁当前节点和指向头部的指针,因为我不相信只使用要删除的节点的函数会起作用,因为没有参考头部。(除非有人能证明我错了,请这样做!)
我最终得到了一个看起来像这样的原型:(对于那些正在寻找提示的人)
int particle_remove(struct particle *p, struct particle **head);