复制链表中的结构

标签 c

在这里,我将结构从一个节点复制到另一个节点,但是当我遇到最后一个节点时,我将出现段错误,因为 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/5949674/

相关文章:

c - 使用 Intel 内在函数进行位逆向重新排序优化

c - 不同目录中多个文件的 Makefile

C (C89) 当使用 for 循环将结构分配给结构变量时,它们都被设置为第一次迭代结果的值

c - 无法从文件中读取,并在我的程序中使用文件中的数据

c++ - 基于转义字符的字符串解析

c - 如何在 Linux 内核中为 char* 类型的字符串分配内存?

C 循环和转到

c - C 中函数指针的数组。如何使用枚举从数组中选择我想要的元素?

c - OSX FSEventStreamEventFlags 无法正常工作

c - task_for_pid 总是在 C 中的 darwin 上返回 (os/kern) 失败