Sissejuhatus lingitud loendite kasutamisse Java -s

Sissejuhatus lingitud loendite kasutamisse Java -s

Andmestruktuur kasutab erinevaid eelnevalt määratletud meetodeid andmete salvestamiseks, toomiseks ja kustutamiseks, mis lõpeb 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.





Kuidas lingitud loend töötab?

Iga lingitud loend algab spetsiaalse sõlmega, mida sageli nimetatakse peaks, mille ülesanne on alati osutada loendi algusele. 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.

Lingitud loendi loomine Java -s

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.



Murede lahususe põhimõte näeb ette, et iga konkreetse probleemi käsitlev koodiosa 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 setterid 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 Node {
private int Data;
private Node NextNode;
//constructor
public Node() {
Data = 0;
NextNode = null;
}
//getters and setters
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNextNode() {
return NextNode;
}
public void setNextNode(Node nextNode) {
NextNode = nextNode;
}
}

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

Lingitud loendi näide

Allpool on näide Java -lingitud loendist.

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = 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 loendikogum on üks põhjus, miks arendaja võib kasutada seda andmestruktuuri mõne muu andmestruktuuri, näiteks virnade asemel (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.

//insert node at front method
public void insertAtFront(int key) {
//create a new node using the node class
Node Temp = new Node();
//check if the Temp node was successfully created
//assign the data that was provides by the user to it
if(Temp != null) {
Temp.setData(key);
Temp.setNextNode(null);

//check if the head of the linked list is empty
//assign the node that was just created to the head position
if(Head == null) {
Head = Temp;
}
//if a node is already at the head position
//add the new node to it and set it as the head
else {
Temp.setNextNode(Head);
Head = 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.

public class Driver {
//executes the program
public static void main(String[] args) {
//create a new linked list called List
LinkedList List = new LinkedList();
//add each value to the front of the linked list as a new node
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 lingitud loendi loomiseks. Ülaltoodud koodi vaadates peaks olema lihtne näha, et number „2” on lingitud loendi peaasendis. Aga kuidas saate seda kinnitada?

kas ma pean emaplaati uuendama?

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 sõlme, mis loendi moodustab, salvestatud andmed.

Kuva kõigi sõlmede meetodi näide

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

//display all nodes method
public void displayAllNodes() {
//create a new node call Temp and assign it to the head of the linked list
//if the head has a null value then the linked list is empty
Node Temp = Head;
if (Head == null){
System.out.println('The list is empty.');
return;
}
System.out.println('The List:');

while(Temp != null) {
//print the data in each node to the console(starting from the head)
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 rea koodi.

Kõigi sõlmede kuvamise meetodi näide

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

//print the nodes in a linked list
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.

//search for a single node using a key
public boolean findNode(int key) {
//create a new node and place it at the head of the linked list
Node Temp = Head;
//while the current node is not empty
//check if its data matches the key provided by the user
while (Temp != null) {
if (Temp.getData() == key) {
System.out.println('The node is in the list');
return true;
}
//move to the next node
Temp = Temp.getNextNode();
}
//if the key was not found in the linked list
System.out.println('The node is not in the list');
return false;
}

Koos displayAllNodes meetodil, kinnitasite, et LinkedList sisaldab 5 paarisarvu vahemikus 2 kuni 10. 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.

//check if a node is in the linked list
List.findNode(4);

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

The node is in the list

Sõlme kustutamise meetodi kasutamine

Kasutades sama panga näidet ülalt, võib klient panga andmebaasis soovida oma konto sulgeda. Siin on kasulik kustutada sõlme 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 key) {
Node Temp = Head;
Node prev = null;
//check if the head node holds the data
//and delete it
if (Temp != null && Temp.getData() == key) {
Head = Temp.getNextNode();
return;
}
//search the other nodes in the list
//and delete it
while (Temp != null) {
if (Temp.getNextNode().getData() == key ) {
prev = Temp.getNextNode().getNextNode();
Temp.setNextNode(prev);
return;
}
Temp = Temp.getNextNode();
}
}

Sõlme kustutamise meetodi näite kasutamine

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

kuidas taastada bios windows 10
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

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

The List:
2 6 8 10

Nüüd saate Java -s luua lingitud loendeid

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?

Jaga Jaga Piiksuma E -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 21 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 igale tehnoloogia algajale on lihtne aru saada. 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