簡體   English   中英

復制c中的鏈接列表

[英]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是前一個節點....因此,您實際上是在鏈接列表中向后指向。

請查看這些鏈接以獲得正確的邏輯:

編寫一個函數來復制C ++中的鏈表

改編@ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM