logo

Јава Лист Ноде

У Јави, ЛистНоде је кључна структура података која се користи за ефикасну имплементацију повезаних листа. Повезане листе су динамичке структуре података које се састоје од чворова, где сваки чвор садржи вредност и референцу на следећи чвор на листи. Овај чланак има за циљ да пружи свеобухватан преглед ЛистНоде-а у Јави, покривајући његове карактеристике, предности и како да га ефикасно користите.

Шта је ЛистНоде?

ЛистНоде представља један чвор у повезаној листи. Обично садржи две главне компоненте: вредност или податке ускладиштене у чвору и референцу (или везу) на следећи чвор на листи. Повезивањем ових чворова можемо створити флексибилну и ефикасну структуру података способну за руковање различитим операцијама.

Дефинисање ЛистНоде у Јави:

У Јави, ЛистНоде се обично имплементира као класа са две променљиве инстанце: поље података за чување вредности и следеће поље за референцу на следећи чвор. Ево примера једноставне ЛистНоде класе:

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

Рад са ЛистНоде:

    Прављење ЛинкедЛист-а:

Да бисмо креирали повезану листу, ми инстанцирамо објекат ЛистНоде за сваки чвор и успостављамо везе између њих. Ево примера:

 ListNode node1 = new ListNode(10); ListNode node2 = new ListNode(20); ListNode node3 = new ListNode(30); node1.next = node2; node2.next = node3; 
    Прелазак преко повезане листе:

Да бисмо итерирали преко повезане листе, почињемо од главног чвора (први чвор на листи) и пратимо следеће референце док не дођемо до краја (где је следећа референца нула). Ево примера преласка преко горње листе:

 ListNode current = node1; while (current != null) { System.out.println(current.val); current = current.next; } 
    Додавање и уклањање чворова:

ЛистНоде нам омогућава да додајемо и уклањамо чворове на различитим позицијама у повезаној листи. Подешавањем следећих референци можемо ефикасно да убацујемо или бришемо чворове. Ове операције су корисне за динамичке структуре података које захтевају честе модификације.

Додатне операције:

ЛистНоде подржава друге операције као што је тражење одређене вредности, проналажење дужине повезане листе и извођење различитих манипулација на листи, као што је преокретање или сортирање.

Предности ЛистНоде и ЛинкедЛистс:

    Динамичка величина:Повезане листе могу динамички да расту или се смањују како се елементи додају или уклањају, за разлику од низова фиксне величине.Ефикасно уметање и брисање:ЛистНоде омогућава ефикасно уметање и брисање на било којој позицији на листи, пружајући флексибилност у управљању подацима.Ефикасност меморије:Повезане листе динамички додељују меморију, користећи само неопходну количину за сваки чвор, што их чини погодним за велике или различите скупове података.Свестраност:Повезане листе могу бити једноструко повезане (сваки чвор указује на следећи) или двоструко повезане (сваки чвор указује на следећи и претходни), нудећи различите компромисе између употребе меморије и функционалности.

Структура података ЛистНоде у Јави пружа моћну основу за имплементацију повезаних листа. Користећи ЛистНоде и његове повезане операције, програмери могу ефикасно да рукују динамичким подацима, врше сложене манипулације и граде разноврсне структуре података. Разумевање и савладавање концепта ЛистНоде ће у великој мери побољшати вашу способност решавања проблема и дизајнирања ефикасних алгоритама у Јава програмирању.

Ево примера Јава програма који демонстрира структуру података ЛистНоде и изводи основне операције на повезаној листи:

ЛинкедЛистЕкампле.јава

јава програми
 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 } } 

Излаз:

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