logo

Java List Node

U Javi, ListNode je ključna podatkovna struktura koja se koristi za učinkovitu implementaciju povezanih popisa. Povezani popisi su dinamičke strukture podataka koje se sastoje od čvorova, gdje svaki čvor sadrži vrijednost i referencu na sljedeći čvor na popisu. Cilj ovog članka je pružiti sveobuhvatan pregled ListNodea u Javi, pokrivajući njegove značajke, prednosti i kako ga učinkovito koristiti.

Što je ListNode?

ListNode predstavlja jedan čvor u povezanom popisu. Obično sadrži dvije glavne komponente: vrijednost ili podatke pohranjene u čvoru i referencu (ili vezu) na sljedeći čvor na popisu. Povezivanjem ovih čvorova možemo stvoriti fleksibilnu i učinkovitu strukturu podataka sposobnu za rukovanje različitim operacijama.

java niz s formatom

Definiranje ListNode u Javi:

U Javi se ListNode obično implementira kao klasa s dvije varijable instance: podatkovno polje za pohranu vrijednosti i sljedeće polje za referencu na sljedeći čvor. Evo primjera jednostavne klase ListNode:

 public class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } } 

Rad s ListNode:

    Stvaranje LinkedList-a:

Da bismo stvorili povezani popis, instanciramo objekt ListNode za svaki čvor i uspostavljamo veze između njih. Evo primjera:

 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; 
    Kretanje povezanim popisom:

Da bismo iterirali preko povezanog popisa, počinjemo od glavnog čvora (prvi čvor na popisu) i pratimo sljedeće reference dok ne dođemo do kraja (gdje je sljedeća referenca null). Evo primjera obilaska gornjeg popisa:

 ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } 
    Dodavanje i uklanjanje čvorova:

ListNode nam omogućuje dodavanje i uklanjanje čvorova na različitim pozicijama u povezanom popisu. Podešavanjem sljedećih referenci možemo učinkovito umetati ili brisati čvorove. Ove su operacije korisne za dinamičke strukture podataka koje zahtijevaju česte izmjene.

Dodatne operacije:

ListNode podržava druge operacije kao što je traženje određene vrijednosti, pronalaženje duljine povezanog popisa i izvođenje raznih manipulacija na popisu, kao što je okretanje ili sortiranje.

Prednosti ListNode i LinkedLists:

    Dinamička veličina:Povezani popisi mogu dinamički rasti ili se smanjivati ​​kako se elementi dodaju ili uklanjaju, za razliku od nizova fiksne veličine.Učinkovito umetanje i brisanje:ListNode omogućuje učinkovito umetanje i brisanje na bilo kojoj poziciji na popisu, pružajući fleksibilnost u upravljanju podacima.Učinkovitost memorije:Povezani popisi dinamički dodjeljuju memoriju, koristeći samo potrebnu količinu za svaki čvor, što ih čini prikladnima za velike ili različite skupove podataka.Svestranost:Povezani popisi mogu biti jednostruko povezani (svaki čvor pokazuje na sljedeći) ili dvostruko povezani (svaki čvor pokazuje na sljedeći i prethodni), nudeći različite kompromise između upotrebe memorije i funkcionalnosti.

Struktura podataka ListNode u Javi pruža snažnu osnovu za implementaciju povezanih popisa. Koristeći ListNode i njegove povezane operacije, programeri mogu učinkovito rukovati dinamičkim podacima, izvoditi složene manipulacije i graditi svestrane strukture podataka. Razumijevanje i ovladavanje konceptom ListNode uvelike će poboljšati vašu sposobnost rješavanja problema i dizajniranja učinkovitih algoritama u Java programiranju.

Evo primjera Java programa koji demonstrira strukturu podataka ListNode i izvodi osnovne operacije na povezanom popisu:

LinkedListExample.java

 class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } } public class LinkedListExample { public static void main(String[] args) { // Creating a linked list: 10 -> 20 -> 30 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; // Traversing the linked list and printing the values System.out.println('Linked List:'); ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 20 30 // Adding a new node: 15 -> 20 -> 30 ListNode newNode = new ListNode(15); newNode.next = node2; node1.next = newNode; // Traversing the updated linked list System.out.println('Updated Linked List:'); current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 15 20 30 // Removing a node: 10 -> 15 -> 30 node1.next = newNode.next; // Traversing the modified linked list System.out.println('Modified Linked List:'); current = node1; while (current != null) { System.out.println(current.val); current = current.next; } // Output: 10 20 30 } } 

Izlaz:

 Linked List: 10 20 30 Updated Linked List: 10 15 20 30 Modified Linked List: 10 20 30