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/