hur man rekursivt passera i en länkad lista

Den länkade listan datastruktur är ett kraftfullt alternativ till enkla kedjor . Till skillnad från arrayer kan data läggas snabbt till och tas bort från en länkad lista utan att återskapa listan ett element i taget . Men till skillnad från arrayer , kan data i en länkad lista endast nås i ordning. Du kan göra detta med en enkel slinga eller med en rekursiv ( eller egen ringer ) funktion . Detta kommer att skrivas i Java , men koden kan genomföras på något språk med endast små justeringar för att passa den syntax skillnaderna
1
Öppna en textredigerare
2
Klistra in följande Java -kod. :

public class RecursiveLLTraverser {

public void traverseList ( LinkedList l ) {

}

}

Alla koden kommer att gå inom ” traverseList ” metoden
3
Klistra in följande innanför ” traverseList ” metoden .

om ( l. size ( ) == 0 ) återvända ,

om ( l. size () > 0 ) {

LinkedList n=l. clone () ;

Object o=n. removeFirst () ;

o. doSomething () ;

traverseList ( n ) ,

}

Detta tar en länkad lista och gör en ytlig klon av den med den borttagna första elementet (och några behandling som utförs på det . ) Denna klon är sedan köra genom travers själva listan . Så småningom kommer klon vara tom , i vilket fall passera Lista metoden kommer bara tillbaka

tips och varningar

  • Alla rekursiva algoritmer med minst två fall : ett basfall , som måste återvända , och en rekursiv fall , vilket minskar datamängden till något lättare hanteras. Ett vanligt fel i rekursiva metoder är att glömma basen fallet . Detta orsakar en oändlig loop som till slut kraschar när datorn tar slut stacken .
  • Rekursiva metoder är beroende av ett system inställning som kallas ” stack ” som ändras med operativsystem och språk . Detta avsnitt av minne håller reda på alla pågående metoder . Försöker en rekursiv algoritm på en extremt stor lista kan producera stack fel .
  • Visited 1 times, 1 visit(s) today

    コメント

    タイトルとURLをコピーしました