Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako odstrániť reťazec od Dvojnásobne prepojeného zoznamu v Jave ?

Programovací jazyk Java je dodávaný s radom súčasťou dátových štruktúr , ako sú spojových zoznamov a slovníkov . Avšak , môže v určitom okamihu chcú vytvoriť svoj ​​vlastný implementácie dátových štruktúr , aby vyhovovalo vašim špecifickým účely . To tiež znamená , že sa vykonáva svoje vlastné základné funkcie pre dátové štruktúry , vrátane vkladanie a mazanie funkcií . V prípade dvojnásobne spájať zoznam obsahujúci reťazec hodnoty , je to otázka , ako zabezpečiť , že ste si uzol obsahujúci reťazec a spájajúce predmety pred a po odstránené položky zachovať štruktúru zoznamu . Veci , ktoré budete potrebovať
Java Development Kit ( JDK )
textovom editore alebo integrované vývojové prostredie ( IDE )
Zobraziť ďalšie inštrukcie Cestuj 1

Vyhľadajte uzol spájať zoznam , ktorý odstráni . V tomto príklade sú uzly dvakrát prepojeného zoznamu sú zastúpené dátové položky " ListItem " , ktorý obsahuje reťazec (uložený ako " hodnota " ) , a dva odkazy na ďalšie ListItems : jeden " predchádzajúci" a na neho jeden " po " je v zozname . Funkcia " findit " prechádza v zozname, kým nájsť uzol , ktorý obsahuje hodnotu reťazca , vracia referenciu na tento uzol :

verejné ListItem findit ( String slovo ) {

ListItem prúd = hlava , //vedúci zoznamu

while ( current.value = slovo ! ) { prúd = current.next ; }

návrat prúdu ; }
2

vytvorte kostru funkcie pre odstránenie uzla . Táto funkcia bude volať " findit " vyhľadajte uzol :

public void deleteItem ( String slovo ) {

ListItem odstraňovanie = findit ( word ) ;

}

3

Upravte funkciu " deleteItem " spojiť predchádzajúci uzol na nasledujúce uzla . Aby bolo zaistené , že dvojnásobne spájať zoznam zostáva neporušená , musí byť predchádzajúce uzol spojený so zvyškom zoznamu nasledujúce uzol :

public void deleteItem ( String slovo ) {

ListItem odstraňovanie = findit ( slovo ) , removing.previous.after = removing.after , //predchádzajúci uzol sa odkazuje na nasledujúce uzla }
4

Upravte funkciu " deleteItem " prepojiť nasledujúce uzol predchádzajúci uzol . Ak chcete dokončiť prepojenie a udržiavať zoznam ako dvojnásobne spájať zoznam , nasledujúce uzol vymasteného uzla sa teraz musí spojiť späť do vymasteného uzla predchádzajúceho uzla :

public void deleteItem ( String slovo ) {

ListItem odstraňovanie = findit ( word ) ;

removing.previous.after = removing.after ; removing.after.previous = removing.previous ; //nasledujúce uzol teraz odkazuje na predchádzajúci uzol }

5

Odstrániť uzol :

public void deleteItem ( String slovo ) {

ListItem odstraňovanie = findit ( word ) ;

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

odstraňovanie = null ; }

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené