复制链表中的结构

标签 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/5948273/

相关文章:

c - fgets() 在 C 中不起作用?

c - 套接字 API : accept method didn't set sockaddr_in structure

objective-c - ARC Objective-C 中的 C 风格多维数组

c - 我是如何让 gcc 生成 .bundle 而不是 .so 的?

c++ - 帮助使用 GetGlyphOutline 函数 (WinAPI)

C: fork 和信号灯

c - 如果数组仅使用列值定义,则当数组超出时没有错误,没有警告

c - 我什么时候释放变量decodeSet1?

c++ - 尝试使用 time.h 库计算两个日期之间的差异

c - 难以理解 fork() 和进程树