Datu struktūra izmanto dažādas iepriekš noteiktas metodes datu glabāšanai, izgūšanai un dzēšanai, kas beidzas ar efektīvu programmu izveidi. Saistītais saraksts ir populāra datu struktūra, kas sastāv no savienoto (vai saistīto) mezglu saraksta.
Bet kā izveidot saistītu sarakstu Java? Paskatīsimies.
Katrs saistītais saraksts sākas ar īpašu mezglu, ko bieži dēvē par "galvu", kura pienākums ir norādīt uz saraksta sākumu visu laiku. Galva ir svarīga, jo katram saistītā saraksta mezglam nav fiziski jāseko savam pēctecim (tas nozīmē, ka priekšgājējam un pēctecim nav jābūt fiziski blakus).
Tāpat kā jebkura datu struktūra, saistītais saraksts atvieglo izveidi, izgūšanu, ievietošanu un iznīcināšanu, izmantojot iepriekš definētu funkciju kopumu, ko var izmantot jebkurš izstrādātājs.
Java programmai, kas paredzēta saistītu sarakstu izveidei un manipulēšanai, būs trīs atšķirīgas sadaļas; mezglu klase, saistītā saraksta klase un draiveris. Lai gan šīs trīs sadaļas var apvienot vienā failā, datorzinātnēs pastāv dizaina princips, kas pazīstams kā "bažu atdalīšana", kas jāzina katram izstrādātājam.
Bažu nodalīšanas princips nosaka, ka katra koda sadaļa, kas attiecas uz konkrētām problēmām, ir jāatdala. Šis princips palīdzēs jums izveidot tīrāku (lasāmāku) kodu un ir ideāli piemērots datu struktūru izveidošanai.
Pirmais solis, lai izveidotu Java sarakstu, ir izveidot mezglu klasi. Mezglu klasei jābūt diviem atribūtiem; viens no atribūtiem atspoguļos mezgla datu daļu, bet otrs atribūts - saistīto daļu. Mezglu klasei vajadzētu būt arī konstruktoram, getteriem un setteriem.
Saistīts: Uzziniet, kā izveidot nodarbības Java
Ieguvēji un iestatītāji ļaus citām klasēm (piemēram, saistīto sarakstu klasei) piekļūt dažādiem mezgliem saistītajā sarakstā.
Mezglu klases piemērs
Tālāk ir sniegts mezglu klases piemērs, lai jūs varētu saprast, ko mēs domājam:
publiskās klases mezgls {
privāti int Dati;
privāts mezgls NextNode;
//constructor
public Node () {
Dati = 0;
NextNode = null;
}
// getteri un seteri
public int getData () {
atgriezt datus;
}
public void setData (int dati) {
Dati = dati;
}
public Node getNextNode () {
atgriezt NextNode;
}
public void setNextNode (Node nextNode) {
Nākamais mezgls = nākamais mezgls;
}
}
Šajā piemērā datu atribūtā tiks saglabātas veselu skaitļu vērtības. Tagad, kad jums ir mezglu klase, ir pienācis laiks pāriet uz saistīto sarakstu.
Tālāk ir sniegta Java saraksta piemērs.
publiskas klases LinkedList {
privātā mezgla galva;
//constructor
publisks LinkedList () {
Galva = nulle;
}
}
Iepriekš minētais kods izveidos saistītu saraksta klasi, tomēr bez dažādām darbībām klasi var uzskatīt par tukšas čaulas ekvivalentu. Saistītajai saraksta datu struktūrai ir vairākas darbības, kuras var izmantot tās aizpildīšanai:
- Ievietojiet priekšpusē.
- Ievietojiet vidū.
- Ievietojiet aizmugurē.
Saistīts: Kā veidot datu struktūras, izmantojot JavaScript ES6 klases
Saistītā ievietošanas metožu sarakstu kolekcija ir viens no iemesliem, kāpēc izstrādātājs varētu izvēlēties izmantot šos datus pār citu datu struktūru, piemēram, kaudzes (kas ļauj ievietot un dzēst tikai no augšas).
Ievietošanas izmantošana priekšpusē
Ievietošanas priekšpusē metode, kā norāda nosaukums, saistītā saraksta sākumā ievieto jaunus datus (vai jaunus mezglus).
Ievietojiet priekšējās metodes piemēru
Tālāk ir sniegts piemērs tam, kā saraksta sākumā ievietot jaunus datus.
// ievietojiet mezglu priekšpusē
public void insertAtFront (int atslēga) {
// izveidot jaunu mezglu, izmantojot mezglu klasi
Mezgla temp = jauns mezgls ();
// pārbaudiet, vai temp mezgls ir veiksmīgi izveidots
// piešķirt tam lietotāja sniegtos datus
ja (Temp! = null) {
Temp.setData (atslēga);
Temp.setNextNode (null);
// pārbaudiet, vai saistītā saraksta galva nav tukša
// piešķirt galvas pozīcijai tikko izveidoto mezglu
ja (galva == null) {
Galva = Temp;
}
// ja mezgls jau atrodas galvas pozīcijā
// pievienojiet tam jaunu mezglu un iestatiet to kā galvu
cits {
Temp.setNextNode (Head);
Galva = Temp;
}
}
}
The insertAtFront metode iepriekš minētajā piemērā ļauj lietotājam pievienot jaunus mezglus attiecīgajam saistītajam sarakstam.
Ievietojuma pielietošana priekšpusē
Tālāk ir sniegts piemērs, kā ievietot ieliktni priekšpusē.
publiskās klases šoferis {
// izpilda programmu
public static void main (String [] args) {
// izveidojiet jaunu saistītu sarakstu ar nosaukumu Saraksts
LinkedList List = jauns LinkedList ();
// pievienot katru vērtību saistītā saraksta priekšpusē kā jaunu mezglu
List.insertAtFront (10);
List.insertAtFront (8);
List.insertAtFront (6);
List.insertAtFront (4);
List.insertAtFront (2);
}
}
The Šoferis klase (tas ir nosaukums, kas bieži tiek piešķirts izpildāmajai klasei Java), izmanto klasi LinkedList, lai izveidotu saistītu sarakstu ar pieciem pāra skaitļiem. Aplūkojot iepriekš minēto kodu, vajadzētu viegli redzēt, ka skaitlis "2" atrodas saistītā saraksta galvenajā pozīcijā. Bet kā jūs to varat apstiprināt?
Izmantojot visu mezglu parādīšanas metodi
Visu mezglu parādīšanas metode ir būtiska saistītā saraksta metode. Bez tā izstrādātājs nevarēs redzēt mezglus saistītā sarakstā. Tas pārvietojas pa saistīto sarakstu (sākot no galvas), drukājot datus, kas saglabāti katrā mezglā, kas veido sarakstu.
Parādīt visu mezglu metodes piemēru
Tālāk ir sniegts piemērs, kā Java izmantot displeja visas piezīmes metodi.
// parādīt visu mezglu metodi
public void displayAllNodes () {
// izveidot jaunu mezglu zvanu Temp un piešķirt to saistītā saraksta galvenei
// ja galvai ir nulles vērtība, saistītais saraksts ir tukšs
Mezgla temp = galva;
ja (galva == null) {
System.out.println ("Saraksts ir tukšs.");
atgriešanās;
}
System.out.println ("Saraksts:");
while (Temp! = null) {
// drukājiet datus katrā mezglā uz konsoli (sākot no galvas)
System.out.print (Temp.getData () + "");
Temp = Temp.getNextNode ();
}
}
Tagad, kad displayAllNodes metode ir pievienota LinkedList klasi, varat apskatīt saistīto sarakstu, pievienojot vadītāju klasei vienu koda rindu.
Izmantojot visu mezglu parādīšanas metodes piemēru
Tālāk redzēsit, kā izmantot visu mezglu parādīšanas metodi.
// izdrukājiet mezglus saistītā sarakstā
List.displayAllNodes ();
Izpildot iepriekš minēto koda rindu, konsolē tiks parādīta šāda izvade:
Saraksts:
2 4 6 8 10
Izmantojot mezgla atrašanas metodi
Būs gadījumi, kad lietotājs saistītā sarakstā vēlēsies atrast konkrētu mezglu.
Piemēram, nebūtu praktiski, ja banka, kurai ir miljoniem klientu, drukātu visu klientu datus savā datu bāzē, kad viņiem ir jāredz tikai informācija par konkrētu klientu.
Tāpēc tā vietā, lai izmantotu displayAllNodes metode, efektīvāka metode ir atrast vienu mezglu, kas satur nepieciešamos datus. Šī iemesla dēļ viena mezgla metodes meklēšana ir svarīga saistītā saraksta datu struktūrā.
Atrast mezgla metodes piemēru
Tālāk ir sniegts mezgla atrašanas metodes izmantošanas piemērs.
// meklēt vienu mezglu, izmantojot atslēgu
public boolean findNode (int atslēga) {
// izveidojiet jaunu mezglu un novietojiet to saistītā saraksta galvgalī
Mezgla temp = galva;
// kamēr pašreizējais mezgls nav tukšs
// pārbaudiet, vai tā dati atbilst lietotāja norādītajai atslēgai
while (Temp! = null) {
ja (Temp.getData () == taustiņš) {
System.out.println ("Mezgls ir sarakstā");
atgriezties patiesi;
}
// pāriet uz nākamo mezglu
Temp = Temp.getNextNode ();
}
// ja atslēga netika atrasta saistītajā sarakstā
System.out.println ("Mezgls nav sarakstā");
atgriezt nepatiesu;
}
Ar displayAllNodes metodi, jūs apstiprinājāt, ka LinkedList satur 5 pāra skaitļus no 2 līdz 10. The findNode piemērs var apstiprināt, vai viens no šiem pāra skaitļiem ir cipars 4, vienkārši izsaucot metodi vadītāja klasē un norādot numuru kā parametru.
Izmantojot mezgla atrašanas metodes piemēru
Tālāk ir sniegts piemērs tam, kā praksē izmantot mezgla atrašanas metodi.
// pārbaudiet, vai mezgls ir piesaistītajā sarakstā
List.findNode (4);
Iepriekš minētais kods konsolē radīs šādu izvadi:
Mezgls ir sarakstā
Izmantojot mezgla dzēšanas metodi
Izmantojot to pašu bankas piemēru no augšas, klients bankas datu bāzē varētu vēlēties slēgt savu kontu. Šeit noderēs mezgla dzēšanas metode. Tā ir vissarežģītākā saistītā saraksta metode.
Metode Dzēst mezglu meklē noteiktu mezglu, dzēš šo mezglu un saista iepriekšējo mezglu ar to, kas seko dzēstajam mezglam.
Mezgla metodes dzēšanas piemērs
Zemāk ir mezgla dzēšanas metodes piemērs.
public void findAndDelete (int atslēga) {
Mezgla temp = galva;
Mezgls iepriekš = nulle;
// pārbaudiet, vai galvenajam mezglam ir dati
// un izdzēsiet to
ja (Temp! = null && Temp.getData () == taustiņš) {
Galva = Temp.getNextNode ();
atgriešanās;
}
// meklējiet citus mezglus sarakstā
// un izdzēsiet to
while (Temp! = null) {
ja (Temp.getNextNode (). getData () == atslēga) {
prev = Temp.getNextNode (). getNextNode ();
Temp.setNextNode (iepriekšējais);
atgriešanās;
}
Temp = Temp.getNextNode ();
}
}
Izmantojot mezgla dzēšanas metodes piemēru
Zemāk ir piemērs mezgla dzēšanas metodes izmantošanai praksē.
// dzēst mezglu, kurā glabājas dati 4
List.findAndDelete (4);
// izdrukājiet visus saistītā saraksta mezglus
List.displayAllNodes ();
Izmantojot divas iepriekš minētās koda rindas esošajā draiveru klasē, konsole radīs šādu izvadi:
Saraksts:
2 6 8 10
Ja jūs nokļuvāt šī apmācības raksta beigās, jūs uzzināsit:
- Kā izveidot mezglu klasi.
- Kā izveidot saistītu sarakstu klasi.
- Kā aizpildīt saistīto sarakstu klasi ar iepriekš definētām metodēm.
- Kā izveidot draiveru klasi un izmantot dažādas saistīto sarakstu metodes, lai sasniegtu vēlamo rezultātu.
Saistītais saraksts ir tikai viena no daudzajām datu struktūrām, kuras varat izmantot datu glabāšanai, izgūšanai un dzēšanai. Tā kā jums ir viss nepieciešamais, lai sāktu, kāpēc neizmēģināt šos piemērus sev Java?
Mācīties Java? Ļaujiet masīviem viegli apstrādāt jūsu datus.
Lasīt Tālāk
- Programmēšana
- Java
- Programmēšana
- Kodēšanas padomi
Kadeisha Kean ir pilna komplekta programmatūras izstrādātājs un tehniskais/tehnoloģiju rakstnieks. Viņai ir izteikta spēja vienkāršot dažus no sarežģītākajiem tehnoloģiskajiem jēdzieniem; materiāla ražošana, ko var viegli saprast ikviens tehnoloģiju iesācējs. Viņa aizraujas ar rakstīšanu, interesantas programmatūras izstrādi un pasaules apceļošanu (caur dokumentālajām filmām).
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu