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