1
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;
}

この関数は、リンクされたリストをコピーすることになっていますが、このように、関数を呼び出して画面に印刷すると、リストが逆になります...助けやヒントはありますか? 前もって感謝します!

4

2 に答える 2

3

前のノードはnova->prox=aux2;どこにaux2ありますか....したがって、実際にはリンクされたリストで後方を指しています。

正しいロジックについては、次のリンクを参照してください。

C++ で連結リストをコピーする関数のコーディング

How do you copy alinked list into another list?からの @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;
}
于 2013-05-24T00:18:57.973 に答える