PDA

Visualizza la versione completa : [C++]Invertire lista


xrwnis
06-10-2008, 15:40
Ciao!!! Devo scrivere una procedura che inverta gli elementi di una lista. Cioè se l'input è 1,2,3,4 l'output sarà 4,3,2,1. Questa qui non funziona...Qualche suggerimento?? Grazie :ciauz: :ciauz:



void ribalta(Pnodo &TL1,Pnodo TL,Pnodo L)//TL1,TL ed L inizialmente sono tutti la testa lista
{

Pnodo tmp1,tmp2;

if(TL1==TL)
{
while(L->next!=NULL)
L=L->next;

tmp1=L;
tmp2=TL;
TL1=tmp1;
L=NULL;
TL1->next=tmp2;
return ribalta(TL1,TL,TL1);

}

else if(TL->next!=NULL)
{
while(L->next!=NULL)
L=L->next;
tmp1=L;
tmp2=TL;
L=NULL;
TL=tmp1;
TL->next=tmp2;
return ribalta(TL1,TL->next,TL->next);
}

}

MrX87
09-10-2008, 00:01
ciao, premetto che non sono molto esperto però...dando uno sguardo al codice che hai postato ho notato delle imprecisioni a mio parere...per esempio



tmp1=L;
TL1=tmp1;

questo assegnamento non ha molto senso...perchè quando finisce il while()
precedente l è NULL quindi...tmp1 diventa NULL e di conseguenza anche TL1...poi segue l'altra:


TL1->next=tmp2;

se TL1 è NULL come fai a puntare a next?!....

Loading