Увод у употребу повезаних листа у Јави

Увод у употребу повезаних листа у Јави

Структура података користи различите унапред дефинисане методе за складиштење, преузимање и брисање података што кулминира стварањем ефикасних програма. Повезана листа је популарна структура података која се састоји од листе чворова који су повезани (или повезани).





Али како створити повезану листу у Јави? Хајде да погледамо.





Како функционише повезана листа?

Свака повезана листа почиње посебним чвором који се често назива и „глава“, који има одговорност да у сваком тренутку показује на почетак листе. Заглавље је важно јер сваки чвор на повезаној листи не мора физички пратити свог наследника (што значи да претходник и наследник не морају бити физички суседни).





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

Креирање повезане листе у Јави

Јава програм који је дизајниран за креирање и управљање повезаним листама имаће три карактеристична одељка; класа чвора, класа повезане листе и управљачки програм. Иако се ова три одељка могу комбиновати у једној датотеци, у рачунарској науци постоји принцип дизајна познат као „раздвајање брига“ који би сваки програмер требао знати.



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

Први корак у креирању повезане листе у Јави је стварање класе чвора. Класа чвора треба да има два атрибута; један од атрибута представљаће део података чвора, док ће други атрибут представљати повезани део. Класа чвора такође треба да има конструктор, геттере и сеттере.





Повезан: Научите како да креирате класе у Јави

Добављачи и постављачи ће омогућити другим класама (попут класе повезане листе) да приступе различитим чворовима унутар повезане листе.





Пример класе чвора

Испод је пример класе чворова да бисте стекли представу о томе шта мислимо:


public class Node {
private int Data;
private Node NextNode;
//constructor
public Node() {
Data = 0;
NextNode = null;
}
//getters and setters
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNextNode() {
return NextNode;
}
public void setNextNode(Node nextNode) {
NextNode = nextNode;
}
}

У овом примеру, атрибут података чуваће целобројне вредности. Сада када имате класу чворова, време је да пређете на повезану листу.

Пример повезане листе

Испод је пример повезане листе у Јави.

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = null;
}
}

Горњи код ће створити повезану класу листе, међутим, без различитих операција, класа се може посматрати као еквивалент празне љуске. Структура података повезане листе има неколико операција које се могу користити за њено попуњавање:

  • Уметните на предњој страни.
  • Уметните у средину.
  • Уметните позади.

Повезан: Како изградити структуре података помоћу ЈаваСцрипт ЕС6 класа

Колекција метода уметања повезаних листа један је од разлога зашто би програмер могао да одлучи да користи ову структуру података преко друге структуре података, као што су хрпе (што дозвољава само уметање и брисање одозго).

Коришћењем методе Инсерт ат тхе Фронт

Метода уметања на предњој страни, као што име говори, убацује нове податке (или нове чворове) на предњој страни повезане листе.

Уметните на предњој страни Пример методе

Испод је пример како бисте уметнули нове податке испред своје листе.

//insert node at front method
public void insertAtFront(int key) {
//create a new node using the node class
Node Temp = new Node();
//check if the Temp node was successfully created
//assign the data that was provides by the user to it
if(Temp != null) {
Temp.setData(key);
Temp.setNextNode(null);

//check if the head of the linked list is empty
//assign the node that was just created to the head position
if(Head == null) {
Head = Temp;
}
//if a node is already at the head position
//add the new node to it and set it as the head
else {
Temp.setNextNode(Head);
Head = Temp;
}
}
}

Тхе инсертАтФронт метода у горњем примеру дозвољава кориснику да додаје нове чворове на дату повезану листу.

Примена уметка на предњем примеру

Испод је пример како бисте применили уметак на предњој страни.

public class Driver {
//executes the program
public static void main(String[] args) {
//create a new linked list called List
LinkedList List = new LinkedList();
//add each value to the front of the linked list as a new node
List.insertAtFront(10);
List.insertAtFront(8);
List.insertAtFront(6);
List.insertAtFront(4);
List.insertAtFront(2);
}
}

Тхе Дривер цласс (што је име које се често додељује извршној класи у Јави), користи класу ЛинкедЛист за креирање повезане листе од пет парних бројева. Гледајући горњи код, требало би бити лако видети да је број '2' на челу позиције на повезаној листи. Али како то можете потврдити?

како уметнути гиф у гоогле слајдове

Користећи методу Прикажи све чворове

Метода приказа свих чворова је битна метода повезане листе. Без тога, програмер неће моћи да види чворове на повезаној листи. Путује кроз повезану листу (почевши од главе) штампајући податке ускладиштене у сваком чвору који чини листу.

Пример приказа свих чворова

Испод је пример коришћења методе приказа свих напомена у Јави.

//display all nodes method
public void displayAllNodes() {
//create a new node call Temp and assign it to the head of the linked list
//if the head has a null value then the linked list is empty
Node Temp = Head;
if (Head == null){
System.out.println('The list is empty.');
return;
}
System.out.println('The List:');

while(Temp != null) {
//print the data in each node to the console(starting from the head)
System.out.print(Temp.getData() + ' ');
Temp = Temp.getNextNode();
}
}

Сада када је дисплаиАллНодес метода је додата у ЛинкедЛист класе можете погледати повезану листу додавањем једне линије кода у класу управљачког програма.

Коришћење примера методе Прикажи све чворове

У наставку ћете видети како бисте користили методу приказа свих чворова.

//print the nodes in a linked list
List.displayAllNodes();

Извршавање горње линије кода ће произвести следећи излаз у конзоли:

Листа:

2 4 6 8 10

Коришћењем методе Финд Ноде

Биће случајева када ће корисник желети да пронађе одређени чвор на повезаној листи.

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

Стога, уместо да користите дисплаиАллНодес метода, ефикаснија метода је проналажење једног чвора који садржи потребне податке. Због тога је тражење методе једног чвора важно у структури података повезане листе.

Пример методе проналажења чвора

Испод је пример коришћења методе финд ноде.

//search for a single node using a key
public boolean findNode(int key) {
//create a new node and place it at the head of the linked list
Node Temp = Head;
//while the current node is not empty
//check if its data matches the key provided by the user
while (Temp != null) {
if (Temp.getData() == key) {
System.out.println('The node is in the list');
return true;
}
//move to the next node
Temp = Temp.getNextNode();
}
//if the key was not found in the linked list
System.out.println('The node is not in the list');
return false;
}

Са дисплаиАллНодес методом, потврдили сте да ЛинкедЛист садржи 5 парних бројева од 2 до 10. финдНоде горњи пример може потврдити да ли је један од тих парних бројева број 4 једноставним позивањем методе у класи управљачких програма и давањем броја као параметра.

Пример примене методе Финд Ноде

Испод је пример како бисте у пракси користили методу проналажења чвора.

//check if a node is in the linked list
List.findNode(4);

Горњи код ће произвести следећи излаз у конзоли:

The node is in the list

Употреба методе Делете а Ноде Метход

Користећи исти пример банке одозго, клијент у бази података банке могао би пожелети да затвори свој рачун. Овде ће метода брисања чвора бити корисна. То је најсложенији метод повезане листе.

Метода Делете а Ноде тражи дати чвор, брише га и повезује претходни чвор са оним који следи иза чвора који је избрисан.

Избришите пример методе чвора

Испод је пример методе брисања чвора.

public void findAndDelete(int key) {
Node Temp = Head;
Node prev = null;
//check if the head node holds the data
//and delete it
if (Temp != null && Temp.getData() == key) {
Head = Temp.getNextNode();
return;
}
//search the other nodes in the list
//and delete it
while (Temp != null) {
if (Temp.getNextNode().getData() == key ) {
prev = Temp.getNextNode().getNextNode();
Temp.setNextNode(prev);
return;
}
Temp = Temp.getNextNode();
}
}

Коришћење примера Методе брисања чвора

Испод је пример коришћења методе брисања чвора у пракси.

виндовс 10 вифи нема приступ интернету
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

Коришћење два горња реда кода у већ постојећој класи Дривер ће произвести следећи излаз у конзоли:

The List:
2 6 8 10

Сада можете да креирате повезане листе у Јави

Ако сте дошли до краја овог водича, научићете:

  • Како креирати класу чвора.
  • Како креирати класу повезане листе.
  • Како попунити класу повезане листе унапред дефинисаним методама.
  • Како креирати класу управљачких програма и користити различите методе повезане листе да бисте постигли жељени резултат.

Повезана листа само је једна од многих структура података које можете користити за складиштење, преузимање и брисање података. Пошто имате све што вам је потребно за почетак, зашто не бисте сами испробали ове примере у Јави?

Објави Објави Твеет Емаил Како креирати и изводити операције над низовима у Јави

Учење Јаве? Допустите низовима да са лакоћом рукују вашим подацима.

Прочитајте следеће
Повезане теме
  • Програмирање
  • Јава
  • Програмирање
  • Савети за кодирање
О аутору Кадеисха Кеан(Објављен 21 чланак)

Кадеисха Кеан је програмер софтвера и писац техничке/технологије. Она има изразиту способност да поједностави неке од најсложенијих технолошких концепата; производњу материјала који може лако разумети сваки почетник у технологији. Одушевљена је писањем, развојем занимљивог софтвера и путовањем по свету (кроз документарне филмове).

Више од Кадеисха Кеан

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили