logo

„Java“ sąrašo mazgas

„Java“ programoje „ListNode“ yra labai svarbi duomenų struktūra, naudojama norint efektyviai įgyvendinti susietus sąrašus. Susieti sąrašai yra dinaminės duomenų struktūros, susidedančios iš mazgų, kur kiekvienas mazgas turi reikšmę ir nuorodą į kitą sąrašo mazgą. Šio straipsnio tikslas – pateikti išsamią „Java“ „ListNode“ apžvalgą, apimančią jo funkcijas, privalumus ir efektyvų naudojimą.

Kas yra sąrašo mazgas?

ListNode reiškia vieną mazgą susietame sąraše. Paprastai jį sudaro du pagrindiniai komponentai: reikšmė arba duomenys, saugomi mazge, ir nuoroda (arba nuoroda) į kitą sąrašo mazgą. Sujungę šiuos mazgus, galime sukurti lanksčią ir efektyvią duomenų struktūrą, galinčią atlikti įvairias operacijas.

ListNode apibrėžimas Java:

„Java“ sistemoje „ListNode“ paprastai įgyvendinamas kaip klasė su dviem egzempliorių kintamaisiais: duomenų laukas reikšmei saugoti ir kitas laukas, skirtas kitam mazgui nurodyti. Štai paprastos ListNode klasės pavyzdys:

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

Darbas su „ListNode“:

    LinkedList kūrimas:

Norėdami sukurti susietą sąrašą, kiekvienam mazgui sukuriame objektą ListNode ir užmezgame ryšius tarp jų. Štai pavyzdys:

 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; 
    Susieto sąrašo peržiūra:

Norėdami kartoti susietą sąrašą, pradedame nuo pagrindinio mazgo (pirmojo sąrašo mazgo) ir sekame kitas nuorodas, kol pasiekiame pabaigą (kur kita nuoroda yra nulinė). Štai pavyzdys, kaip pereiti aukščiau pateiktą sąrašą:

 ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } 
    Mazgų pridėjimas ir pašalinimas:

ListNode leidžia mums pridėti ir pašalinti mazgus skirtingose ​​susieto sąrašo pozicijose. Koreguodami kitas nuorodas, galime efektyviai įterpti arba ištrinti mazgus. Šios operacijos naudingos dinaminėms duomenų struktūroms, kurias reikia dažnai keisti.

Papildomos operacijos:

ListNode palaiko kitas operacijas, tokias kaip konkrečios reikšmės paieška, susieto sąrašo ilgio nustatymas ir įvairių manipuliacijų su sąrašu atlikimas, pvz., keitimas atgal arba rūšiavimas.

„ListNode“ ir „LinkedLists“ pranašumai:

    Dinaminis dydis:Pridedant arba pašalinus elementus, susieti sąrašai gali dinamiškai didėti arba mažėti, kitaip nei fiksuoto dydžio masyvai.Veiksmingi įterpimai ir ištrynimai:„ListNode“ leidžia efektyviai įterpti ir ištrinti bet kurią sąrašo vietą, suteikdamas lankstumo tvarkant duomenis.Atminties efektyvumas:Susieti sąrašai atmintį paskirsto dinamiškai, kiekvienam mazgui naudodami tik reikiamą kiekį, todėl jie tinka dideliems arba įvairiems duomenų rinkiniams.Universalumas:Susieti sąrašai gali būti susieti atskirai (kiekvienas mazgas nukreipia į kitą) arba dvigubai susieti (kiekvienas mazgas nurodo kitą ir ankstesnį), siūlant skirtingus atminties naudojimo ir funkcionalumo kompromisus.

„Java“ „ListNode“ duomenų struktūra suteikia galingą pagrindą diegti susietus sąrašus. Naudodami ListNode ir su juo susijusias operacijas, kūrėjai gali efektyviai tvarkyti dinaminius duomenis, atlikti sudėtingas manipuliacijas ir kurti įvairias duomenų struktūras. ListNode koncepcijos supratimas ir įsisavinimas labai pagerins jūsų gebėjimą spręsti problemas ir sukurti efektyvius Java programavimo algoritmus.

Pateikiame „Java“ programos, kuri parodo „ListNode“ duomenų struktūrą ir atlieka pagrindines operacijas su susietu sąrašu, pavyzdys:

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

Išvestis:

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