[英]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.