Het is gebruikelijk om moet omkeren van een gekoppelde lijst, maar het kan moeilijk zijn om het goed te doen. Een van de eenvoudigste oplossingen is het doorlopen van de lus, omkering van elke aanwijzer. Deze pseudocode laat zien hoe dit proces uit te voeren terwijl het bijhouden van de nodige variabelen. De pseudocode is algemeen genoeg dat u moet zitten kundig voor passen aan welke taal van uw code.
Selectievakje voor eenvoudige randgevallen. Als de hoofd pointer null is, de lijst leeg is en geen werk moet worden gedaan. Als het hoofd de volgende pointer null is, is er slechts één element in de lijst zodat het omkeren, er niets gebeurt.
Als hoofd = null vervolgens terug te keren
Als hoofd-> volgende = null dan terugInitialiseren van drie pointers: vorige, huidige en volgende. \"Prev\" en \"current\" moet wijzen op het hoofd knooppunt van de lijst. \"Next\" moet wijzen op het tweede knooppunt door te kijken naar de aanwijzer in het hoofd knooppunt.
aanwijzer prev = hoofd
GAAN
aanwijzer huidige = hoofd
GAAN
aanwijzer volgende = hoofd-> volgende;Van het hoofd knooppunt volgende aanwijzer instellen op null. Het hoofd knooppunt wordt het laatste knooppunt in de lijst, dus er geen knooppunten na het zullen.
hoofd-> volgende = null
Het omkeren van de richting van de wijzers lijst doorlopen. De drie pointers eerder geïnitialiseerd worden gebruikt om de huidige positie in de lijst bij te houden.
terwijl de volgende! = null //A volgende null-pointer betekent dat we hebben bereikt het einde van de lijst
huidige = volgende //Advance de huidige aanwijzer
volgende = huidige-> volgende //Advance de volgende aanwijzer
huidige-> volgende = prev //Point het huidige knooppunt op het vorige knooppunt geplaatst, omkering van de link
Prev = huidige //Advance de laatste aanwijzer
einde terwijlWijs de hoofd variabele aan het nieuwe hoofd van de lijst.
hoofd = huidige
- Als u wilt doorlopen van een gekoppelde lijst in beide richtingen Overweeg de implementatie van een dubbel-linked lijst.