logo

Vozlišče seznama Java

V Javi je ListNode ključna podatkovna struktura, ki se uporablja za učinkovito izvajanje povezanih seznamov. Povezani seznami so dinamične podatkovne strukture, ki so sestavljene iz vozlišč, kjer ima vsako vozlišče vrednost in sklic na naslednje vozlišče na seznamu. Namen tega članka je zagotoviti izčrpen pregled ListNode v Javi, ki pokriva njegove funkcije, prednosti in kako ga učinkovito uporabiti.

Kaj je ListNode?

ListNode predstavlja posamezno vozlišče na povezanem seznamu. Običajno vsebuje dve glavni komponenti: vrednost ali podatke, shranjene v vozlišču, in sklic (ali povezavo) na naslednje vozlišče na seznamu. S povezovanjem teh vozlišč lahko ustvarimo prilagodljivo in učinkovito podatkovno strukturo, ki je sposobna obvladovati različne operacije.

Defining a ListNode in Java:

V Javi je ListNode običajno implementiran kot razred z dvema spremenljivkama primerka: podatkovno polje za shranjevanje vrednosti in naslednje polje za sklic na naslednje vozlišče. Tukaj je primer preprostega razreda ListNode:

kako pretvoriti niz v int java
 public class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } } 

Delo z ListNode:

    Ustvarjanje LinkedList:

Za ustvarjanje povezanega seznama ustvarimo objekt ListNode za vsako vozlišče in vzpostavimo povezave med njimi. Tukaj je primer:

 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; 
    Prehod po povezanem seznamu:

Za ponavljanje po povezanem seznamu začnemo od glavnega vozlišča (prvega vozlišča na seznamu) in sledimo naslednjim sklicem, dokler ne pridemo do konca (kjer je naslednji sklic nič). Tukaj je primer prečkanja zgornjega seznama:

 ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } 
    Dodajanje in odstranjevanje vozlišč:

ListNode nam omogoča dodajanje in odstranjevanje vozlišč na različnih mestih v povezanem seznamu. S prilagajanjem naslednjih referenc lahko učinkovito vstavljamo ali brišemo vozlišča. Te operacije so uporabne za dinamične podatkovne strukture, ki zahtevajo pogoste spremembe.

Dodatne operacije:

ListNode podpira druge operacije, kot je iskanje določene vrednosti, iskanje dolžine povezanega seznama in izvajanje različnih manipulacij na seznamu, kot je obračanje ali razvrščanje.

Prednosti ListNode in LinkedLists:

    Dinamična velikost:Povezani seznami se lahko dinamično povečujejo ali krčijo, ko se dodajajo ali odstranjujejo elementi, za razliko od nizov s fiksno velikostjo.Učinkovito vstavljanje in brisanje:ListNode omogoča učinkovito vstavljanje in brisanje na katerem koli mestu na seznamu, kar zagotavlja prilagodljivost pri upravljanju podatkov.Učinkovitost pomnilnika:Povezani seznami dinamično dodeljujejo pomnilnik in uporabljajo samo potrebno količino za vsako vozlišče, zaradi česar so primerni za velike ali različne nize podatkov.Vsestranskost:Povezani seznami so lahko enojno povezani (vsako vozlišče kaže na naslednje) ali dvojno povezani (vsako vozlišče kaže na naslednje in prejšnje), kar ponuja različne kompromise med uporabo pomnilnika in funkcionalnostjo.

Podatkovna struktura ListNode v Javi zagotavlja močno osnovo za implementacijo povezanih seznamov. Z uporabo ListNode in z njim povezanih operacij lahko razvijalci učinkovito obdelujejo dinamične podatke, izvajajo zapletene manipulacije in gradijo vsestranske podatkovne strukture. Razumevanje in obvladovanje koncepta ListNode bo močno izboljšalo vašo sposobnost reševanja problemov in oblikovanja učinkovitih algoritmov v programiranju Java.

Tukaj je primer programa Java, ki prikazuje strukturo podatkov ListNode in izvaja osnovne operacije na povezanem seznamu:

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

Izhod:

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