在c中复制链表

标签 c list linked-list

typedef struct slist *LInt;

typedef struct slist{

int value;
LInt prox;
}Node;

LInt clone2(LInt l){

LInt nova=NULL,aux2=NULL;
while(l){
    aux2=nova;
    nova=(LInt)malloc(sizeof(Node));
    nova->value=l->value;
    nova->prox=aux2;
    l=l->prox;
    }
return nova;
}

这个函数应该复制一个链表,但是这样一来,当我调用这个函数在屏幕上打印它时,列表就颠倒过来了……有什么帮助或提示吗?提前致谢!

最佳答案

你有nova->prox=aux2;其中 aux2是前一个节点....因此,您实际上是在链表中向后指向。

请查看这些链接以获得正确的逻辑:

Coding a function to copy a linked-list in C++

改编自@templatetypedef 的回答 How do you copy a linked list into another list?

LInt Clone(LInt l) {
if (l == NULL) return NULL;

LInt result = (LInt)malloc(sizeof(Node));
result->value = l->value;
result->prox = Clone(l->next);
return result;
}

关于在c中复制链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725930/

相关文章:

调用函数FindNextFile抛出访问冲突异常

python - 在python3中组合两个列表

C++ 在单链表中插入值时出错 (E0137)

创建一个结构体,其中包含带有自定义对象的二维链表数组

c# - 单击按钮将字符串添加到 List<string>

java - 从文件加载和保存链表

c - 将结构传递给函数会出现 'undefined reference to' 错误

c - 为什么操作系统(OS)被称为硬件依赖/平台依赖

c - 为什么我会在 C 中收到此错误?不兼容的类型

arrays - 列出三维数组