Andmestruktuur kasutab andmete salvestamiseks, allalaadimiseks ja kustutamiseks erinevaid eelnevalt määratletud meetodeid, mis lõpevad tõhusate programmide loomisega. Lingitud loend on populaarne andmestruktuur, mis koosneb ühendatud (või lingitud) sõlmede loendist.

Kuidas aga Java -s lingitud loendit luua? Vaatame.

Iga lingitud loend algab spetsiaalse sõlmega, mida sageli nimetatakse "peaks", mille ülesanne on alati loendi algusesse osutada. Pea on oluline, sest iga lingitud loendi sõlm ei pea järglast füüsiliselt jälgima (see tähendab, et eelkäija ja järglane ei pea olema füüsiliselt kõrvuti).

Nagu iga andmestruktuur, hõlbustab lingitud loend eelmääratletud funktsioonide komplekti loomist, otsimist, sisestamist ja hävitamist, mida saavad kasutada kõik arendajad.

Java -programm, mis on loodud lingitud loendite loomiseks ja manipuleerimiseks, sisaldab kolme eristavat jaotist; sõlmeklass, lingitud loendiklass ja draiver. Kuigi neid kolme jaotist saab ühendada üheks failiks, on arvutiteaduses olemas disainipõhimõte, mida tuntakse kui "murede lahutamist", mida iga arendaja peaks teadma.

instagram viewer

Murede lahususe põhimõte näeb ette, et koodi iga jaotis, mis käsitleb konkreetset probleemi, tuleks eraldada. See põhimõte aitab teil luua puhtamat (loetavamat) koodi ja sobib ideaalselt andmestruktuuride loomiseks.

Esimene samm Java -lingitud loendi loomiseks on sõlmeklassi loomine. Sõlmeklassil peaks olema kaks atribuuti; üks atribuutidest esindab sõlme andmeosa, teine ​​atribuut aga lingitud osa. Sõlmeklassis peaks olema ka konstruktor, getterid ja setterid.

Seotud: Siit saate teada, kuidas Java -s klasse luua

Getterid ja seadistajad võimaldavad teistel klassidel (näiteks lingitud loendiklassil) juurde pääseda lingitud loendi erinevatele sõlmedele.

Sõlmeklassi näide

Allpool on näide sõlmeklassi kohta, et saada aimu, mida me mõtleme:


public class Sõlm {
era int Andmed;
privaatne sõlm NextNode;
//constructor
public Node () {
Andmed = 0;
NextNode = null;
}
// getterid ja setterid
public int getData () {
tagastama andmed;
}
public void setData (int andmed) {
Andmed = andmed;
}
public Node getNextNode () {
tagasta NextNode;
}
public void setNextNode (Node nextNode) {
NextNode = järgmineNode;
}
}

Selles näites salvestab andmete atribuut täisarvud. Nüüd, kui teil on sõlmeklass, on aeg liikuda lingitud loendisse.

Allpool on näide Java -lingitud loendist.

avalik klass LinkedList {
privaatne sõlmepea;
//constructor
avalik LinkedList () {
Pea = null;
}
}

Ülaltoodud kood loob lingitud loendiklassi, kuid ilma selle erinevate toiminguteta võib klassi vaadelda kui tühja kesta ekvivalenti. Lingitud loendi andmestruktuuril on mitu toimingut, mida saab selle täitmiseks kasutada.

  • Sisestage esiküljel.
  • Sisestage keskele.
  • Sisestage tagaküljele.

Seotud: Kuidas ehitada andmestruktuure JavaScripti ES6 klassidega

Lisamismeetodite lingitud loendikogu on üks põhjus, miks arendaja võib neid andmeid kasutada struktuuri üle teise andmestruktuuri, näiteks virnade (mis võimaldab sisestamist ja kustutamist ainult ülalt).

Sisestusmeetodi kasutamine ees

Esipaneeli lisamine, nagu nimigi ütleb, lisab lingitud loendi ette uued andmed (või uued sõlmed).

Sisestage eesmise meetodi näide

Allpool on näide selle kohta, kuidas sisestada loendi ette uusi andmeid.

 // sisestada sõlm eesotsas
public void insertAtFront (int võti) {
// luua uus sõlm sõlmeklassi abil
Sõlme temp = uus sõlm ();
// kontrollige, kas temp -sõlme loomine õnnestus
// määrata kasutaja antud andmed sellele
kui (Temp! = null) {
Temp.setData (võti);
Temp.setNextNode (null);
// kontrollige, kas lingitud loendi pea on tühi
// määrake äsja loodud sõlm peaasendisse
kui (pea == null) {
Pea = Temp;
}
// kui sõlm on juba peaasendis
// lisage sellele uus sõlm ja määrake see peaks
muu {
Temp.setNextNode (Head);
Pea = Temp;
}
}
}

The insertAtFront meetod ülaltoodud näites võimaldab kasutajal antud lingitud loendisse uusi sõlme lisada.

Näite lisamine esiosale

Allpool on näide selle kohta, kuidas esiosa sisestada.

avaliku klassi juht {
// käivitab programmi
public static void main (String [] args) {
// looge uus lingitud loend nimega List
LinkedList List = uus LinkedList ();
// lisage iga väärtus lingitud loendi ette uue sõlmena
List.insertAtFront (10);
List.insertAtFront (8);
List.insertAtFront (6);
List.insertAtFront (4);
List.insertAtFront (2);
}
}

The Autojuht klass (see on nimi, mis Java -s sageli täidetavale klassile omistatakse), kasutab klassi LinkedList viiest paarisarvust koosneva loendi loomiseks. Ülalolevat koodi vaadates peaks olema lihtne näha, et number "2" on lingitud loendi peaasendis. Aga kuidas saate seda kinnitada?

Kõigi sõlmede kuvamise meetodi kasutamine

Kõigi sõlmede kuvamise meetod on oluline lingitud loendi meetod. Ilma selleta ei näe arendaja lingitud loendi sõlme. See liigub läbi lingitud loendi (alustades peast) ja prindib igasse loendit moodustavasse sõlme salvestatud andmed.

Kuva kõigi sõlmede meetodi näide

Allpool on näide kõigi märkmete kuvamise meetodi kasutamisest Java -s.

// kuvab kõigi sõlmede meetodi
public void displayAllNodes () {
// looge uus sõlme kõne Temp ja määrake see lingitud loendi päisele
// kui päise väärtus on null, on lingitud loend tühi
Sõlme temp = pea;
kui (pea == null) {
System.out.println ("Loend on tühi.");
tagasipöördumine;
}
System.out.println ("Loend:");
while (Temp! = null) {
// printige iga sõlme andmed konsooli (alustades peast)
System.out.print (Temp.getData () + "");
Temp = Temp.getNextNode ();
}
}

Nüüd, kui displayAllNodes meetodile on lisatud meetod LinkedList klassi, saate vaadata lingitud loendit, lisades draiveriklassi ühe koodirida.

Kõigi sõlmede kuvamise meetodi näide

Allpool näete, kuidas kasutada kõigi sõlmede kuvamise meetodit.

// lingitud loendi sõlmede printimine
List.displayAllNodes ();

Ülaltoodud koodirea täitmine annab konsoolis järgmise väljundi:

Nimekiri:

2 4 6 8 10

Sõlme leidmise meetodi kasutamine

On juhtumeid, kui kasutaja soovib lingitud loendist konkreetse sõlme leida.

Näiteks ei oleks otstarbekas, kui pank, kellel on miljoneid kliente, prindiks oma andmebaasi kõik kliendid, kui neil on vaja näha ainult konkreetse kliendi üksikasju.

Seetõttu selle asemel, et kasutada displayAllNodes meetod, on tõhusam meetod nõutavaid andmeid sisaldava üksiku sõlme leidmine. Seetõttu on lingitud loendi andmestruktuuris oluline ühe sõlme meetodi otsimine.

Otsige sõlme meetodi näidet

Allpool on näide sõlme leidmise meetodi kasutamisest.

// võtme abil ühe sõlme otsimine
public boolean findNode (int võti) {
// looge uus sõlm ja asetage see lingitud loendi etteotsa
Sõlme temp = pea;
// kui praegune sõlm pole tühi
// kontrollige, kas selle andmed vastavad kasutaja antud võtmele
while (Temp! = null) {
if (Temp.getData () == võti) {
System.out.println ("Sõlm on loendis");
tagastama tõene;
}
// liikuda järgmise sõlme juurde
Temp = Temp.getNextNode ();
}
// kui võtit ei leitud lingitud loendist
System.out.println ("Sõlme pole loendis");
tagastama vale;
}

Koos displayAllNodes meetodil, kinnitasite, et LinkedList sisaldab 5 paarisarvu 2 kuni 10. The findNode ülaltoodud näide võib kinnitada, kas üks paarisarvudest on number 4, lihtsalt helistades juhiklassi meetodile ja esitades numbri parameetrina.

Otsingu sõlme meetodi näite kasutamine

Allpool on näide selle kohta, kuidas otsingusõlme meetodit praktikas kasutada.

// kontrollige, kas sõlm on lingitud loendis
List.findNode (4);

Ülaltoodud kood annab konsoolis järgmise väljundi:

Sõlm on loendis

Sõlme kustutamise meetodi kasutamine

Kasutades sama panga näidet ülalt, võib klient panga andmebaasis soovida oma konto sulgeda. Siin on abiks sõlme kustutamise meetod. See on kõige keerulisem lingitud loendi meetod.

Meetod Kustuta sõlm otsib antud sõlme, kustutab selle sõlme ja seob eelmise sõlme sõlmega, mis järgneb kustutatud sõlmele.

Sõlme meetodi näide

Allpool on näide sõlme kustutamise meetodist.

public void findAndDelete (int võti) { 
Sõlme temp = pea;
Sõlm eel = null;
// kontrollige, kas peasõlm omab andmeid
// ja kustuta see
if (Temp! = null && Temp.getData () == võti) {
Pea = Temp.getNextNode ();
tagasipöördumine;
}
// otsi loendi teistest sõlmedest
// ja kustuta see
while (Temp! = null) {
if (Temp.getNextNode (). getData () == võti) {
prev = Temp.getNextNode (). getNextNode ();
Temp.setNextNode (eelmine);
tagasipöördumine;
}
Temp = Temp.getNextNode ();
}
}

Sõlme kustutamise meetodi näite kasutamine

Allpool on näide sõlme kustutamise meetodi praktikas kasutamisest.

// kustutage sõlm, mis andmeid hoiab 4
List.findAndDelete (4);
// prindi kõik lingitud loendi sõlmed
List.displayAllNodes ();

Kahe ülaltoodud koodirida kasutamine olemasolevas draiveriklassis annab konsoolis järgmise väljundi:

Nimekiri:
2 6 8 10

Kui jõudsite selle õpetusartikli lõpuni, olete õppinud:

  • Kuidas luua sõlmeklassi.
  • Kuidas luua lingitud loendiklassi.
  • Lingitud loendiklassi täitmine selle eelmääratletud meetoditega.
  • Kuidas luua draiveriklassi ja kasutada soovitud tulemuse saavutamiseks erinevaid lingitud loendimeetodeid.

Lingitud loend on vaid üks paljudest andmestruktuuridest, mida saate kasutada andmete salvestamiseks, toomiseks ja kustutamiseks. Kuna teil on alustamiseks kõik vajalik olemas, siis miks mitte proovida neid näiteid Java -s?

JagaPiiksumaE -post
Kuidas Java -massiivides toiminguid luua ja teha

Java õppimine? Laske massiividel teie andmeid hõlpsalt käsitseda.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Java
  • Programmeerimine
  • Näpunäiteid kodeerimiseks
Autori kohta
Kadeisha Kean (Avaldatud 19 artiklit)

Kadeisha Kean on täispinu tarkvaraarendaja ja tehniline/tehnoloogiline kirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, millest iga tehnoloogia algaja saab kergesti aru. Ta on kirglik kirjutamise, huvitava tarkvara arendamise ja maailmas reisimise vastu (dokumentaalfilmide kaudu).

Veel Kadeisha Keanilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin