Hvordan slette en streng fra en Dobbelt lenket liste i Java?

Java programmeringsspråk kommer med en serie av inkluderte datastrukturer som lenkede lister eller ordbøker. Men du kan på et tidspunkt ønsker å lage dine egne implementeringer av datastrukturer som passer dine egne spesifikke formål. Det betyr også å implementere dine egne grunnleggende funksjoner for datastrukturen, herunder innsetting og sletting funksjoner. I tilfelle av en dobbelt lenket liste som inneholder strengverdier, er dette et spørsmål om å sikre at man finner den node som inneholder strengen og forbinder elementene før og etter den slettede elementet for å opprettholde strukturen i listen.

Bruksanvisning

1 Finn noden i lenket liste du fjerner. I dette eksemplet er nodene i dobbeltlenket liste representert av dataelementet "listitem", som inneholder en streng (lagret som "value"), og to referanser til andre ListItems: en "forrige" til den, og en "etter" det i listen. Den "findItem" funksjon går gjennom listen til å finne noden som inneholder strengverdien, returnerer en referanse til at node:

offentlig listitem findItem (String ord) {

Listitem Strøm = hode; // Hodet av listen

while (current.value! = ord) {
Strøm = current.next;
}

returstrøm;
}

2 Lag skjelettet av en funksjon for å fjerne noden. Denne funksjonen vil kalle "findItem" for å finne noden:

public void DeleteItem (String ord) {

Listitem fjerne = findItem (ord);

}

3 Modifiser "DeleteItem" funksjon for å koble den foregående noden til den følgende noden. For å sikre at dobbelt lenket liste forblir ubrutt, må den foregående noden være knyttet til resten av listen følgende noden:

public void DeleteItem (String ord) {

Listitem fjerne = findItem (ord);
removing.previous.after = removing.after; // Forrige node knytter nå til følgende node
}

4 Endre "DeleteItem" -funksjonen til å knytte følgende node til forrige node. For å fullføre linken og vedlikeholde listen som en dobbelt lenket liste, må slettes nodens følgende node nå å lenke tilbake til den slettede node forrige node:

public void DeleteItem (String ord) {

Listitem fjerne = findItem (ord);

removing.previous.after = removing.after;
removing.after.previous = removing.previous; // Følgende node knytter nå til forrige node
}

5 Slett node:

public void DeleteItem (String ord) {

Listitem fjerne = findItem (ord);

removing.previous.after = removing.after;
removing.after.previous = removing.previous;

fjerner = null;
}