Susijusių sąrašų naudojimo „Java“ įvadas

Susijusių sąrašų naudojimo „Java“ įvadas

Duomenų struktūra naudoja skirtingus iš anksto nustatytus metodus duomenims saugoti, gauti ir ištrinti, o tai baigiasi veiksmingų programų kūrimu. Susietas sąrašas yra populiari duomenų struktūra, kurią sudaro susietų (arba susietų) mazgų sąrašas.





Bet kaip sukurti susietą sąrašą „Java“? Pažiūrėkime.





Kaip veikia susietas sąrašas?

Kiekvienas susietas sąrašas prasideda nuo specialaus mazgo, kuris dažnai vadinamas „galva“, kuris privalo visą laiką nurodyti sąrašo pradžią. Galva yra svarbi, nes kiekvienam susieto sąrašo mazgui nereikia fiziškai sekti jo įpėdinio (tai reiškia, kad pirmtakas ir įpėdinis neturi būti fiziškai greta).





Kaip ir kiekviena duomenų struktūra, susietas sąrašas palengvina kūrimą, paiešką, įterpimą ir sunaikinimą per iš anksto nustatytų funkcijų rinkinį, kurį gali naudoti bet kuris kūrėjas.

Susietų sąrašų kūrimas „Java“

„Java“ programa, skirta susietiems sąrašams kurti ir jais manipuliuoti, turės tris išskirtinius skyrius; mazgų klasė, susietų sąrašų klasė ir tvarkyklė. Nors šie trys skyriai gali būti sujungti į vieną failą, kompiuterių moksle yra dizaino principas, žinomas kaip „rūpesčių atskyrimas“, kurį turėtų žinoti kiekvienas kūrėjas.



Susirūpinimo atskyrimo principas reikalauja, kad kiekviena kodo dalis, skirta konkrečiam klausimui, turėtų būti atskirta. Šis principas padės sukurti švaresnį (labiau įskaitomą) kodą ir idealiai tinka duomenų struktūroms kurti.

Pirmasis žingsnis kuriant susietą sąrašą „Java“ yra sukurti mazgų klasę. Mazgų klasė turi turėti du atributus; vienas iš atributų parodys mazgo duomenų dalį, o kitas atributas - susietą dalį. Mazgų klasė taip pat turėtų turėti konstruktorių, getterius ir setterius.





Susijęs: Sužinokite, kaip kurti klases „Java“

Gaustuvai ir nustatytojai leis kitoms klasėms (pvz., Susietų sąrašų klasei) pasiekti įvairius susieto sąrašo mazgus.





Mazgų klasės pavyzdys

Žemiau pateikiamas mazgų klasės pavyzdys, kad suprastumėte, ką turime omenyje:


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;
}
}

Šiame pavyzdyje duomenų atributas išsaugos sveikųjų skaičių reikšmes. Dabar, kai turite mazgų klasę, laikas pereiti prie susieto sąrašo.

Susieto sąrašo pavyzdys

Žemiau pateikiamas susieto sąrašo „Java“ pavyzdys.

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = null;
}
}

Aukščiau pateiktas kodas sukurs susietą sąrašo klasę, tačiau be įvairių operacijų klasė gali būti laikoma tuščio apvalkalo atitikmeniu. Susieta sąrašo duomenų struktūra turi keletą operacijų, kurios gali būti naudojamos jai užpildyti:

  • Įdėkite priekyje.
  • Įdėkite viduryje.
  • Įdėkite gale.

Susijęs: Kaip sukurti duomenų struktūras naudojant „JavaScript ES6“ klases

Susietas įterpimo metodų sąrašas yra viena iš priežasčių, kodėl kūrėjas gali pasirinkti naudoti šią duomenų struktūrą kitoje duomenų struktūroje, pvz., Krūvose (tai leidžia įterpti ir ištrinti tik iš viršaus).

Įterpimo į priekį metodas

Įterpimas priekyje, kaip rodo pavadinimas, įterpia naujus duomenis (arba naujus mazgus) susieto sąrašo priekyje.

Įterpkite priekinio metodo pavyzdį

Žemiau pateikiamas pavyzdys, kaip įterpti naujus duomenis sąrašo priekyje.

//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 metodas aukščiau pateiktame pavyzdyje leidžia vartotojui pridėti naujų mazgų į nurodytą susietą sąrašą.

Įdėklo pritaikymas priekyje

Žemiau yra pavyzdys, kaip uždėti įdėklą priekyje.

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 Vairuotojas klasė (šis pavadinimas dažnai priskiriamas vykdomajai klasei „Java“), naudoja „LinkedList“ klasę, kad sudarytų susietą penkių lyginių skaičių sąrašą. Žvelgiant į aukščiau esantį kodą, turėtų būti lengva suprasti, kad skaičius „2“ yra susieto sąrašo pagrindinėje pozicijoje. Bet kaip tai patvirtinti?

kaip išsaugoti vaizdo įrašą iš svetainės

„Rodyti visus mazgus“ metodo naudojimas

Visų mazgų rodymo metodas yra esminis susietų sąrašų metodas. Be jo kūrėjas negalės matyti susietame sąraše esančių mazgų. Jis keliauja per susietą sąrašą (pradedant nuo galvos), spausdindamas duomenis, saugomus kiekviename sąrašą sudarančiame mazge.

Rodyti visus mazgus metodo pavyzdys

Žemiau pateikiamas visų užrašų rodymo metodo naudojimo „Java“ pavyzdys.

//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();
}
}

Dabar, kai displayAllNodes metodas buvo pridėtas prie „LinkedList“ klasę, galite peržiūrėti susietą sąrašą, prie vairuotojų klasės pridėję vieną kodo eilutę.

Rodyti visus mazgus metodo pavyzdys

Žemiau pamatysite, kaip naudosite visų mazgų rodymo metodą.

//print the nodes in a linked list
List.displayAllNodes();

Vykdant aukščiau esančią kodo eilutę, konsolėje bus pateikta tokia išvestis:

Sąrašas:

2 4 6 8 10

„Rasti mazgo“ metodo naudojimas

Bus atvejų, kai vartotojas norės rasti konkretų mazgą susietame sąraše.

Pvz., Nebūtų praktiška, jei bankas, turintis milijonus klientų, išspausdintų visų klientų duomenų bazę, kai jiems reikia matyti tik konkretaus kliento duomenis.

Todėl, užuot naudoję displayAllNodes metodas, efektyvesnis būdas yra rasti vieną mazgą, kuriame yra reikalingi duomenys. Štai kodėl vieno mazgo metodo paieška yra svarbi susieto sąrašo duomenų struktūroje.

Rasti mazgo metodo pavyzdys

Žemiau pateikiamas radimo mazgo metodo naudojimo pavyzdys.

//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;
}

Su displayAllNodes metodą, jūs patvirtinote, kad „LinkedList“ yra 5 lyginiai skaičiai nuo 2 iki 10. findNode aukščiau pateiktas pavyzdys gali patvirtinti, ar vienas iš tų lyginių skaičių yra skaičius 4, paprasčiausiai paskambinus vairuotojuje esančiam metodui ir nurodant numerį kaip parametrą.

Rasti mazgo metodo pavyzdys

Žemiau pateikiamas pavyzdys, kaip praktikoje galėtumėte naudoti paieškos mazgo metodą.

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

Aukščiau pateiktas kodas konsolėje duos tokią išvestį:

The node is in the list

Naudojant metodą „Ištrinti mazgą“

Naudodamas tą patį banko pavyzdį iš viršaus, banko duomenų bazėje esantis klientas gali norėti uždaryti savo sąskaitą. Čia bus naudingas ištrinti mazgo metodas. Tai sudėtingiausias susietų sąrašų metodas.

Metodas „Ištrinti mazgą“ ieško tam tikro mazgo, jį ištrina ir susieja ankstesnį mazgą su tuo, kuris seka po ištrinto mazgo.

Mazgo metodo ištrynimo pavyzdys

Žemiau yra mazgo ištrynimo metodo pavyzdys.

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();
}
}

Panaikinkite mazgo ištrynimo metodo pavyzdį

Žemiau pateikiamas pavyzdys, kaip praktiškai naudoti metodą ištrinti mazgą.

garsiakalbiai, kurie neleidžia garso „Windows 10“
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

Naudojant dvi aukščiau esančias kodo eilutes ankstesnėje „Driver“ klasėje, konsolėje bus pateikta tokia išvestis:

The List:
2 6 8 10

Dabar galite sukurti susietus sąrašus „Java“

Jei baigėte šio vadovėlio straipsnio pabaigą, sužinosite:

  • Kaip sukurti mazgų klasę.
  • Kaip sukurti susieto sąrašo klasę.
  • Kaip užpildyti susietą sąrašo klasę naudojant iš anksto nustatytus metodus.
  • Kaip sukurti vairuotojų klasę ir naudoti skirtingus susietų sąrašų metodus norimam rezultatui pasiekti.

Susietas sąrašas yra tik viena iš daugelio duomenų struktūrų, kurias galite naudoti duomenims saugoti, gauti ir ištrinti. Kadangi turite viską, ko reikia norint pradėti, kodėl gi nepabandžius šių pavyzdžių „Java“?

Dalintis Dalintis „Tweet“ Paštu Kaip sukurti ir atlikti operacijas masyvuose „Java“

Mokotės „Java“? Leiskite masyvams lengvai tvarkyti jūsų duomenis.

Skaityti toliau
Susijusios temos
  • Programavimas
  • „Java“
  • Programavimas
  • Kodavimo patarimai
Apie autorių Kadeisha Kean(Paskelbti 21 straipsniai)

Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir techninė/technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gaminti medžiagą, kurią lengvai supranta bet kuris naujokas. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia