[英]Copy a linked list in c
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
是前一个节点....因此,您实际上是在链接列表中向后指向。
请查看这些链接以获得正确的逻辑:
改编@ templatetypedef的答案如何将链表复制到另一个列表?
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;
}
LInt clone2(LInt l){
LInt ret=NULL;
LInt nova, aux2 = NULL;
while(l){
nova=(LInt)malloc(sizeof(Node));
if(!ret) ret = nova;
if(aux2) aux2->prox = nova;
nova->value=l->value;
nova->prox = NULL;
aux2 = nova;
l=l->prox;
}
return ret;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.