Introducció a l’ús de llistes enllaçades a Java

Introducció a l’ús de llistes enllaçades a Java

Una estructura de dades utilitza diferents mètodes predefinits per emmagatzemar, recuperar i eliminar dades que culminen amb la creació de programes eficients. Una llista enllaçada és una estructura de dades popular, que consisteix en una llista de nodes connectats (o enllaçats).





Però, com es crea una llista enllaçada a Java? Fem una ullada.





Com funciona una llista enllaçada?

Totes les llistes enllaçades comencen amb un node especial que sovint es coneix com a 'cap', que té la responsabilitat d'indicar el començament de la llista en tot moment. El cap és important perquè cada node d’una llista enllaçada no necessita seguir el seu successor físicament (és a dir, que un predecessor i un successor no han de ser físicament adjacents).





Com totes les estructures de dades, la llista enllaçada facilita la creació, recuperació, inserció i destrucció mitjançant un conjunt de funcions predefinides que qualsevol desenvolupador pot utilitzar.

Creació d’una llista enllaçada a Java

Un programa Java dissenyat per crear i manipular llistes enllaçades tindrà tres seccions distintives; la classe de node, la classe de llista enllaçada i el controlador. Tot i que aquestes tres seccions es poden combinar en un sol fitxer, hi ha un principi de disseny en informàtica conegut com a 'separació de preocupacions' que tots els desenvolupadors haurien de conèixer.



El principi de separació de preocupacions determina que cada secció del codi que tracta una preocupació específica s'hagi de separar. Aquest principi us ajudarà a crear codi més net (més llegible) i és ideal per crear estructures de dades.

El primer pas per crear una llista enllaçada a Java és crear una classe de node. Una classe de node ha de tenir dos atributs; un dels atributs representarà la part de dades del node, mentre que l’altre atribut representarà la part enllaçada. Una classe de node també ha de tenir un constructor, getters i seters.





Relacionat: Apreneu a crear classes a Java

Els obtenedors i configuradors permetran que altres classes (com la classe de llista enllaçada) accedeixin als diversos nodes de la llista enllaçada.





Exemple de classe de node

A continuació es mostra un exemple de classe de node per fer-vos una idea del que volem dir:


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

En aquest exemple, l'atribut data emmagatzemarà valors enters. Ara que teniu la classe de nodes, és hora de passar a la llista enllaçada.

Exemple de llista enllaçada

A continuació es mostra un exemple de llista enllaçada a Java.

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

El codi anterior crearà una classe de llista enllaçada, però, sense les seves diverses operacions, la classe es pot veure com l'equivalent a un intèrpret d'ordres buit. L'estructura de dades de la llista enllaçada té diverses operacions que es poden utilitzar per omplir-la:

  • Inseriu a la part frontal.
  • Inseriu al centre.
  • Insereix a la part posterior.

Relacionat: Com es construeixen estructures de dades amb classes JavaScript ES6

La col·lecció de llistes enllaçades de mètodes d’inserció és una de les raons per les quals un desenvolupador pot optar per utilitzar aquesta estructura de dades per sobre d’una altra estructura de dades, com ara les piles (que només permet la inserció i la supressió des de la part superior).

Utilitzant el mètode Insert at the Front

La inserció al mètode frontal, com el seu nom indica, insereix dades noves (o nodes nous) a la part frontal de la llista enllaçada.

Insereix a l'exemple de mètode frontal

A continuació es mostra un exemple de com inseriríeu dades noves a la part frontal de la llista.

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

El insertAtFront El mètode de l’exemple anterior permet a un usuari afegir nodes nous a una llista enllaçada determinada.

Aplicació de la inserció a l'exemple frontal

A continuació es mostra un exemple de com aplicaríeu la inserció a la part frontal.

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

El Conductor class (que és el nom que sovint s’assigna a la classe executable a Java), utilitza la classe LinkedList per crear una llista enllaçada de cinc nombres parells. Si mirem el codi anterior, hauria de ser fàcil veure que el número '2' es troba a la posició principal de la llista enllaçada. Però, com ho podeu confirmar?

com es juga multijugador a Minecraft Java

Mitjançant el mètode Mostra tots els nodes

El mètode de visualització de tots els nodes és un mètode de llista enllaçada essencial. Sense ella, un desenvolupador no podrà veure els nodes d’una llista enllaçada. Viatja per la llista enllaçada (a partir del capçal) imprimint les dades emmagatzemades a cada node que forma la llista.

Mostra tots els nodes Exemple de mètode

A continuació es mostra un exemple d’utilitzar el mètode de visualització de totes les notes a Java.

//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();
}
}

Ara que el displayAllNodes s'ha afegit el mètode a Llista enllaçada class podeu veure la llista enllaçada afegint una sola línia de codi a la classe de controladors.

Utilització de l’exemple del mètode Mostra tots els nodes

A continuació, veureu com utilitzaríeu el mètode de visualització de tots els nodes.

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

Executant la línia de codi anterior es produirà la següent sortida a la consola:

La llista:

2 4 6 8 10

Mitjançant el mètode Find Node

Hi haurà casos en què un usuari voldrà trobar un node específic en una llista enllaçada.

Per exemple, no seria pràctic que un banc que té milions de clients imprimeixi tots els clients a la seva base de dades quan només necessiten veure els detalls d’un client concret.

Per tant, en lloc d’utilitzar el fitxer displayAllNodes mètode més eficaç és trobar el node únic que contingui les dades necessàries. Per això, la cerca d’un mètode d’un sol node és important a l’estructura de dades de la llista enllaçada.

Exemple de mètode Find Node

A continuació es mostra un exemple d’utilitzar el mètode find node.

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

Amb el displayAllNodes , heu confirmat que el fitxer Llista enllaçada conté 5 nombres parells del 2 al 10. El findNode L'exemple anterior pot confirmar si un d'aquests números parells és el número 4 simplement trucant al mètode de la classe de controladors i proporcionant el número com a paràmetre.

Utilitzant l’exemple del mètode Find Node

A continuació es mostra un exemple de com utilitzaríeu el mètode find node a la pràctica.

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

El codi anterior produirà la següent sortida a la consola:

The node is in the list

Mitjançant el mètode Suprimeix un node

Utilitzant el mateix exemple bancari de dalt, és possible que un client de la base de dades del banc vulgui tancar el seu compte. Aquí és on serà útil el mètode d’eliminació d’un node. És el mètode de llista enllaçada més complex.

El mètode Suprimeix un node cerca un node determinat, suprimeix aquest node i enllaça el node anterior amb el que segueix el node que s'ha suprimit.

Suprimiu un exemple de mètode de node

A continuació es mostra un exemple del mètode delete a node.

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();
}
}

Mitjançant l'exemple de mètode Suprimeix un node

A continuació es mostra un exemple d’utilitzar el mètode delete a node a la pràctica.

quina és l'adreça del meu servidor Minecraft
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

L'ús de les dues línies de codi anteriors a la classe de controladors preexistent produirà la següent sortida a la consola:

The List:
2 6 8 10

Ara podeu crear llistes enllaçades a Java

Si heu arribat al final d’aquest article de tutorial, haurà après:

  • Com es crea una classe de node.
  • Com es crea una classe de llista enllaçada.
  • Com omplir una classe de llista enllaçada amb els seus mètodes predefinits.
  • Com crear una classe de controladors i utilitzar els diferents mètodes de llista enllaçada per aconseguir el resultat desitjat.

Una llista enllaçada és només una de les moltes estructures de dades que podeu utilitzar per emmagatzemar, recuperar i suprimir dades. Com que teniu tot el necessari per començar, per què no proveu aquests exemples per vosaltres mateixos a Java?

Compartir Compartir Tweet Correu electrònic Com crear i realitzar operacions en matrius a Java

Aprèn Java? Deixeu que les matrius gestionin les vostres dades amb facilitat.

Llegiu a continuació
Temes relacionats
  • Programació
  • Java
  • Programació
  • Consells de codificació
Sobre l'autor Kadeisha Kean(21 articles publicats)

Kadeisha Kean és un desenvolupador de programari complet i escriptor tècnic / tecnològic. Té la capacitat diferent de simplificar alguns dels conceptes tecnològics més complexos; la producció de material fàcilment comprensible per a qualsevol novell en tecnologia. L’apassiona escriure, desenvolupar programes interessants i viatjar pel món (a través de documentals).

Més de Kadeisha Kean

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us