簡體   English   中英

如何反向鏈接列表

[英]How to reverse linked list

我試圖反向鏈接列表返回反向列表。

typedef struct lligada 
{

     int valor;
     struct lligada *prox;

} *LInt;

這是我的功能:

LInt reverseL (LInt l){

    LInt aux = malloc (sizeof(struct lligada));

    if(l != NULL){

            while( l -> prox != NULL){
                aux = l-> prox;
                aux -> prox = l;
                l = l-> prox;
            }


    }

    else return NULL;

    return aux;
}

你能幫我嗎 ?

我嘗試這樣做:

if(l != NULL){

        if(l -> prox == NULL) {
            aux = l;
        }

        else{
            while( l -> prox != NULL){
                aux = l-> prox;
                aux -> prox = l;
                l = l-> prox;
            }
            aux -> prox = l;
        }

}

這是一個好主意嗎 ?

首先,在這種情況下,對malloc的調用是無用的,這是內存泄漏。

該代碼段無效,因為您在前兩個元素之間創建了一個無限循環

if (l != NULL) 
{
    if (l->prox == NULL) 
    {
        aux = l;
    }
    else 
    {
        while (l->prox != NULL) 
        {
            aux = l->prox;
            aux->prox = l;
            l = l->prox;
        }
        aux->prox = l;
    }
}

你可以這樣改變

LInt new_head, aux;
new_head = NULL;
while (l != NULL) 
{
    aux = l->prox;
    l->prox = new_head;
    new_head = l;
    l = aux;
}

return new_head;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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