Uvod u korištenje povezanih popisa u Javi

Uvod u korištenje povezanih popisa u Javi

Struktura podataka koristi različite unaprijed definirane metode za pohranu, dohvaćanje i brisanje podataka što kulminira stvaranjem učinkovitih programa. Povezani popis popularna je struktura podataka koja se sastoji od popisa čvorova koji su povezani (ili povezani).





Ali kako stvoriti povezani popis u Javi? Pogledajmo.





Kako funkcionira povezani popis?

Svaki povezani popis započinje posebnim čvorom koji se često naziva i 'glava', koji ima odgovornost da u svakom trenutku pokazuje na početak popisa. Zaglavlje je važno jer svaki čvor na povezanom popisu ne mora fizički slijediti svog nasljednika (što znači da prethodnik i nasljednik ne moraju biti fizički susjedni).





Kao i svaka struktura podataka, povezani popis olakšava stvaranje, dohvaćanje, umetanje i uništavanje putem skupa unaprijed definiranih funkcija koje može koristiti svaki programer.

Stvaranje povezanog popisa u Javi

Java program koji je dizajniran za stvaranje i upravljanje povezanim popisima imat će tri različita odjeljka; klasa čvora, klasa povezanog popisa i upravljački program. Iako se ta tri odjeljka mogu kombinirati u jednu datoteku, u računalnoj znanosti postoji princip dizajna poznat kao 'razdvajanje briga' koji bi svaki programer trebao znati.



Načelo razdvajanja zabrinutosti nalaže da se svaki dio koda koji se bavi određenom zabrinutošću treba odvojiti. Ovo načelo pomoći će vam u stvaranju čistijeg (čitljivijeg) koda i idealno je za stvaranje struktura podataka.

Prvi korak u stvaranju povezanog popisa u Javi je stvaranje klase čvora. Klasa čvora trebala bi imati dva atributa; jedan od atributa predstavljat će dio podataka čvora, dok će drugi atribut predstavljati povezani dio. Klasa čvora također treba imati konstruktor, gettere i settere.





Povezano: Saznajte kako stvoriti klase u Javi

Dobavljači i postavljači dopustit će drugim klasama (poput klase povezanog popisa) pristup različitim čvorovima unutar povezanog popisa.





Primjer klase čvora

Ispod je primjer klase čvora kako biste stekli uvid u to što mislimo:


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

U ovom primjeru atribut podataka pohranit će cjelobrojne vrijednosti. Sada kada imate klasu čvora, vrijeme je da prijeđete na povezani popis.

Primjer povezanog popisa

Ispod je primjer povezanog popisa u Javi.

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

Gornji kôd će stvoriti povezanu klasu popisa, međutim, bez različitih operacija, klasa se može smatrati ekvivalentom prazne ljuske. Struktura podataka povezanog popisa ima nekoliko operacija koje se mogu upotrijebiti za njezino popunjavanje:

  • Umetnite sprijeda.
  • Umetnite u sredinu.
  • Umetnite sa stražnje strane.

Povezano: Kako izgraditi strukture podataka s JavaScript ES6 klasama

Skup povezanih popisa metoda umetanja jedan je od razloga zašto bi programer mogao izabrati korištenje ove strukture podataka nad drugom strukturom podataka, kao što su hrpe (što dopušta samo umetanje i brisanje s vrha).

Korištenjem metode Insert at the Front

Metoda umetanja na prednjoj strani, kako naziv govori, ubacuje nove podatke (ili nove čvorove) na prednjoj strani povezanog popisa.

Umetnite na prednjoj strani Primjer metode

Ispod je primjer kako biste umetnuli nove podatke na prednju stranu popisa.

//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 metoda u gornjem primjeru omogućuje korisniku dodavanje novih čvorova na zadani povezani popis.

Primjena Umetanja na prednjoj strani Primjer

Dolje je primjer kako biste primijenili umetak na prednjoj strani.

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 Vozač class (što je naziv koji se često dodjeljuje izvršnoj klasi u Javi), koristi klasu LinkedList za stvaranje povezanog popisa od pet parnih brojeva. Gledajući gornji kôd, trebalo bi biti lako vidjeti da je broj '2' na čelu pozicije na povezanom popisu. Ali kako to možete potvrditi?

trebam li nadograditi svoju matičnu ploču

Korištenjem metode Prikaži sve čvorove

Metoda prikaza svih čvorova bitna je metoda povezane liste. Bez toga, programer neće moći vidjeti čvorove na povezanom popisu. Putuje kroz povezani popis (počevši od glave) ispisujući podatke pohranjene u svakom čvoru koji čini popis.

Primjer metode prikaza svih čvorova

Ispod je primjer korištenja metode prikaza svih bilješki u Javi.

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

Sada kada je displayAllNodes metoda je dodana u LinkedList klase možete pregledati povezani popis dodavanjem jednog reda koda u klasu upravljačkog programa.

Primjer metode Prikaz svih čvorova

U nastavku ćete vidjeti kako biste koristili metodu prikaza svih čvorova.

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

Izvođenje gornje linije koda proizvest će sljedeći izlaz u konzoli:

Popis:

2 4 6 8 10

Korištenjem metode Find Node

Bit će slučajeva kada će korisnik htjeti pronaći određeni čvor na povezanom popisu.

Na primjer, ne bi bilo praktično da banka koja ima milijune klijenata ispisuje sve klijente u svoju bazu podataka samo kad trebaju vidjeti pojedinosti o određenom klijentu.

Stoga, umjesto korištenja displayAllNodes Metoda, učinkovitija metoda je pronaći pojedinačni čvor koji sadrži potrebne podatke. Zbog toga je traženje metode s jednim čvorom važno u strukturi podataka povezanog popisa.

Primjer metode pronalaženja čvora

Ispod je primjer korištenja metode find node.

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

S displayAllNodes metodom, potvrdili ste da LinkedList sadrži 5 parnih brojeva od 2 do 10. findNode gornji primjer može potvrditi je li jedan od tih parnih brojeva broj 4 jednostavnim pozivanjem metode u klasi upravljačkih programa i davanjem broja kao parametra.

Primjer metode Find Node Method

Ispod je primjer kako biste u praksi koristili metodu pronalaženja čvora.

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

Gornji kôd će proizvesti sljedeći izlaz u konzoli:

The node is in the list

Korištenje metode Brisanje čvora

Koristeći isti primjer banke odozgo, klijent u banci može poželjeti zatvoriti svoj račun. Ovdje će metoda brisanja čvora biti korisna. To je najsloženija metoda povezanog popisa.

Metoda Delete a Node traži određeni čvor, briše ga i povezuje prethodni čvor s onim koji slijedi iza čvora koji je izbrisan.

Brisanje primjera metode čvora

Ispod je primjer metode brisanja čvora.

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

Primjer metode Brisanje čvora

Dolje je primjer primjene metode brisanja čvora u praksi.

kako promijeniti savjete za airpod pro
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

Korištenje dva gornja retka koda u već postojećoj klasi Driver će proizvesti sljedeće rezultate u konzoli:

The List:
2 6 8 10

Sada možete stvoriti povezane popise u Javi

Ako ste došli do kraja ovog vodičkog članka, naučit ćete:

  • Kako stvoriti klasu čvora.
  • Kako stvoriti povezanu klasu popisa.
  • Kako popuniti klasu povezanog popisa sa svojim unaprijed definiranim metodama.
  • Kako stvoriti klasu upravljačkih programa i koristiti različite metode povezanih popisa za postizanje željenog rezultata.

Povezani popis samo je jedna od mnogih struktura podataka koje možete koristiti za spremanje, dohvaćanje i brisanje podataka. Budući da imate sve što vam je potrebno za početak, zašto ne biste sami isprobali ove primjere u Javi?

Udio Udio Cvrkut E -pošta Kako stvoriti i izvesti operacije nad nizovima u Javi

Učenje Jave? Dopustite nizovima da s lakoćom obrađuju vaše podatke.

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Java
  • Programiranje
  • Savjeti za kodiranje
O autoru Kadeisha Kean(Objavljen 21 članak)

Kadeisha Kean je programer softvera i pisac tehničke/tehnologije. Ona ima izrazitu sposobnost pojednostavljivanja nekih od najsloženijih tehnoloških koncepata; proizvodnju materijala koji može lako razumjeti svaki početnik u tehnologiji. Oduševljena je pisanjem, razvojem zanimljivog softvera i putovanjem po svijetu (kroz dokumentarne filmove).

Više od Kadeishe Kean

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu