在这里,我将结构从一个节点复制到另一个节点,但是当我遇到最后一个节点时,我将出现段错误,因为 memcpy
中的 temp_clsf->next
将是指向无效位置,我该如何解决这个问题?我无法释放 temp_clsf
因为它不是动态分配。
while(temp_clsf!=NULL)
{
memcpy(&temp_clsf, &temp_clsf->next, sizeof(struct classifier));
if(temp_clsf->next ==NULL)
return;
else
temp_clsf = temp_clsf->next;
}
最佳答案
在循环内,保留指向前一个节点的指针。当循环结束时,用指向 NULL 的指针更新该节点
/* pseudo-code */
while () {
prev = curr;
/* ... */
}
prev->next = NULL;
关于复制链表中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948273/