Εισαγωγή στη χρήση συνδεδεμένων λιστών στην Java

Εισαγωγή στη χρήση συνδεδεμένων λιστών στην Java

Μια δομή δεδομένων χρησιμοποιεί διαφορετικές προκαθορισμένες μεθόδους για την αποθήκευση, ανάκτηση και διαγραφή δεδομένων που καταλήγει στη δημιουργία αποτελεσματικών προγραμμάτων. Μια συνδεδεμένη λίστα είναι μια δημοφιλής δομή δεδομένων, η οποία αποτελείται από μια λίστα κόμβων που είναι συνδεδεμένοι (ή συνδεδεμένοι).





Αλλά πώς δημιουργείτε μια συνδεδεμένη λίστα στην Java; Ας ΡΙΞΟΥΜΕ μια ΜΑΤΙΑ.





Πώς λειτουργεί μια συνδεδεμένη λίστα;

Κάθε συνδεδεμένη λίστα ξεκινά με έναν ειδικό κόμβο που συχνά αναφέρεται ως «κεφαλή», ο οποίος έχει την ευθύνη να δείχνει ανά πάσα στιγμή την αρχή της λίστας. Η κεφαλή είναι σημαντική επειδή κάθε κόμβος σε μια συνδεδεμένη λίστα δεν χρειάζεται να ακολουθεί τον διάδοχό του φυσικά (που σημαίνει ότι ένας προκάτοχος και ένας διάδοχος δεν χρειάζεται να είναι φυσικά γειτονικοί).





Όπως κάθε δομή δεδομένων, η συνδεδεμένη λίστα διευκολύνει τη δημιουργία, ανάκτηση, εισαγωγή και καταστροφή μέσω ενός συνόλου προκαθορισμένων λειτουργιών που μπορούν να χρησιμοποιηθούν από οποιονδήποτε προγραμματιστή.

Δημιουργία συνδεδεμένης λίστας στην Java

Ένα πρόγραμμα Java που έχει σχεδιαστεί για να δημιουργεί και να χειρίζεται συνδεδεμένες λίστες θα έχει τρεις ξεχωριστές ενότητες. η κλάση κόμβων, η κατηγορία συνδεδεμένης λίστας και το πρόγραμμα οδήγησης. Αν και αυτά τα τρία τμήματα μπορούν να συνδυαστούν σε ένα αρχείο, υπάρχει μια αρχή σχεδιασμού στην επιστήμη των υπολογιστών γνωστή ως «διαχωρισμός των ανησυχιών» που κάθε προγραμματιστής πρέπει να γνωρίζει.



Η αρχή του διαχωρισμού των ανησυχιών υπαγορεύει ότι κάθε τμήμα του κώδικα που καλύπτει μια συγκεκριμένη ανησυχία πρέπει να διαχωριστεί. Αυτή η αρχή θα σας βοηθήσει να δημιουργήσετε καθαρότερο (πιο ευανάγνωστο) κώδικα και είναι ιδανική για τη δημιουργία δομών δεδομένων.

Το πρώτο βήμα στη δημιουργία μιας συνδεδεμένης λίστας στην Java είναι η δημιουργία μιας κλάσης κόμβων. Μια κλάση κόμβου πρέπει να έχει δύο χαρακτηριστικά. ένα από τα χαρακτηριστικά θα αντιπροσωπεύει το τμήμα δεδομένων του κόμβου, ενώ το άλλο χαρακτηριστικό θα αντιπροσωπεύει το συνδεδεμένο τμήμα. Μια κλάση κόμβου θα πρέπει επίσης να έχει κατασκευαστή, παραλήπτες και ρυθμιστές.





Σχετίζεται με: Μάθετε πώς να δημιουργείτε τάξεις σε Java

Οι παραλήπτες και οι ρυθμιστές θα επιτρέψουν σε άλλες κλάσεις (όπως η κατηγορία συνδεδεμένης λίστας) να έχουν πρόσβαση στους διάφορους κόμβους της συνδεδεμένης λίστας.





Παράδειγμα κλάσης κόμβου

Παρακάτω είναι ένα παράδειγμα κλάσης κόμβου για να πάρετε μια ιδέα για το τι εννοούμε:


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

Σε αυτό το παράδειγμα, το χαρακτηριστικό δεδομένων θα αποθηκεύσει ακέραιες τιμές. Τώρα που έχετε την κλάση κόμβων, ήρθε η ώρα να προχωρήσετε στη συνδεδεμένη λίστα.

Παράδειγμα συνδεδεμένης λίστας

Παρακάτω είναι ένα παράδειγμα συνδεδεμένης λίστας στην Java.

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

Ο παραπάνω κώδικας θα δημιουργήσει μια κατηγορία συνδεδεμένης λίστας, ωστόσο, χωρίς τις διάφορες λειτουργίες της, η κλάση μπορεί να θεωρηθεί ως το ισοδύναμο ενός άδειου κελύφους. Η δομή δεδομένων συνδεδεμένης λίστας έχει διάφορες λειτουργίες που μπορούν να χρησιμοποιηθούν για την συμπλήρωσή της:

  • Εισάγετε μπροστά.
  • Εισάγετε στη μέση.
  • Εισάγετε στο πίσω μέρος.

Σχετίζεται με: Πώς να δημιουργήσετε δομές δεδομένων με κλάσεις JavaScript ES6

Η συνδεδεμένη συλλογή λιστών μεθόδων εισαγωγής είναι ένας λόγος για τον οποίο ένας προγραμματιστής μπορεί να επιλέξει να χρησιμοποιήσει αυτήν τη δομή δεδομένων σε μια άλλη δομή δεδομένων, όπως στοίβες (η οποία επιτρέπει μόνο την εισαγωγή και τη διαγραφή από την κορυφή).

Χρησιμοποιώντας τη μέθοδο εισαγωγής στο μπροστινό μέρος

Η μέθοδος εισαγωγής στο μπροστινό μέρος, όπως υποδηλώνει το όνομα, εισάγει νέα δεδομένα (ή νέους κόμβους) στο μπροστινό μέρος της συνδεδεμένης λίστας.

Εισαγωγή στο Παράδειγμα μεθόδου μπροστά

Παρακάτω είναι ένα παράδειγμα του τρόπου με τον οποίο θα εισαγάγατε νέα δεδομένα στο μπροστινό μέρος της λίστας σας.

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

ο insertAtFront μέθοδος στο παραπάνω παράδειγμα επιτρέπει σε έναν χρήστη να προσθέσει νέους κόμβους σε μια δεδομένη συνδεδεμένη λίστα.

Εφαρμογή του Insert στο μπροστινό παράδειγμα

Παρακάτω είναι ένα παράδειγμα του τρόπου με τον οποίο θα εφαρμόζατε το ένθετο στο μπροστινό μέρος.

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

ο Οδηγός κλάση (που είναι το όνομα που συχνά αποδίδεται στην εκτελέσιμη κλάση στη Java), χρησιμοποιεί την κλάση LinkedList για να δημιουργήσει μια συνδεδεμένη λίστα πέντε ζυγών αριθμών. Κοιτάζοντας τον παραπάνω κώδικα, θα πρέπει να είναι εύκολο να διαπιστώσετε ότι ο αριθμός «2» βρίσκεται στην επικεφαλίδα στη συνδεδεμένη λίστα. Πώς μπορείτε όμως να το επιβεβαιώσετε;

πόσο εύρος ζώνης χρησιμοποιεί το youtube

Χρήση της μεθόδου Εμφάνιση όλων των κόμβων

Η μέθοδος εμφάνισης όλων των κόμβων είναι μια βασική μέθοδος συνδεδεμένης λίστας. Χωρίς αυτό, ένας προγραμματιστής δεν θα μπορεί να δει τους κόμβους σε μια συνδεδεμένη λίστα. Ταξιδεύει μέσω της συνδεδεμένης λίστας (ξεκινώντας από την κεφαλή) εκτυπώνοντας τα δεδομένα που είναι αποθηκευμένα σε κάθε κόμβο που σχηματίζει τη λίστα.

Παράδειγμα μεθόδου εμφάνισης όλων των κόμβων

Παρακάτω είναι ένα παράδειγμα χρήσης της μεθόδου εμφάνισης όλων των σημειώσεων στην 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();
}
}

Τώρα που το displayAllNodes η μέθοδος έχει προστεθεί στο LinkedList κλάση μπορείτε να δείτε τη συνδεδεμένη λίστα προσθέτοντας μια γραμμή κώδικα στην κατηγορία προγραμμάτων οδήγησης.

Χρήση του παραδείγματος μεθόδου εμφάνισης όλων των κόμβων

Παρακάτω, θα δείτε πώς θα χρησιμοποιούσατε τη μέθοδο εμφάνισης όλων των κόμβων.

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

Η εκτέλεση της γραμμής κώδικα παραπάνω θα παράγει την ακόλουθη έξοδο στην κονσόλα:

Η λίστα:

2 4 6 8 10

Χρησιμοποιώντας τη μέθοδο Εύρεση κόμβου

Θα υπάρξουν περιπτώσεις όπου ένας χρήστης θα θέλει να βρει έναν συγκεκριμένο κόμβο σε μια συνδεδεμένη λίστα.

Για παράδειγμα, δεν θα ήταν πρακτικό για μια τράπεζα που έχει εκατομμύρια πελάτες να εκτυπώνει όλους τους πελάτες στη βάση δεδομένων τους όταν χρειάζεται μόνο να δει τα στοιχεία ενός συγκεκριμένου πελάτη.

Επομένως, αντί να χρησιμοποιήσετε το displayAllNodes μέθοδος, μια πιο αποτελεσματική μέθοδος είναι η εύρεση του μοναδικού κόμβου που περιέχει τα απαιτούμενα δεδομένα. Αυτός είναι ο λόγος για τον οποίο η αναζήτηση μιας μεμονωμένης μεθόδου κόμβου είναι σημαντική στη δομή δεδομένων συνδεδεμένης λίστας.

Εύρεση παραδείγματος μεθόδου κόμβου

Παρακάτω είναι ένα παράδειγμα χρήσης της μεθόδου εύρεσης κόμβου.

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

Με την displayAllNodes μέθοδο, επιβεβαιώσατε ότι το LinkedList περιέχει 5 ζυγούς αριθμούς από 2 έως 10. Το findNode Το παραπάνω παράδειγμα μπορεί να επιβεβαιώσει εάν ένας από αυτούς τους ζυγούς αριθμούς είναι ο αριθμός 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();
}
}

Χρησιμοποιώντας το παράδειγμα Διαγραφή μεθόδου κόμβου

Παρακάτω είναι ένα παράδειγμα χρήσης της μεθόδου διαγραφής κόμβου στην πράξη.

πώς να κοιμηθεί ο υπολογιστής με το πληκτρολόγιο
//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

Τώρα μπορείτε να δημιουργήσετε συνδεδεμένες λίστες σε Java

Εάν φτάσατε στο τέλος αυτού του σεμιναρίου, θα έχετε μάθει:

  • Πώς να δημιουργήσετε μια κλάση κόμβου.
  • Πώς να δημιουργήσετε μια κατηγορία συνδεδεμένης λίστας.
  • Πώς να συμπληρώσετε μια κατηγορία συνδεδεμένης λίστας με τις προκαθορισμένες μεθόδους της.
  • Πώς να δημιουργήσετε μια κατηγορία προγραμμάτων οδήγησης και να χρησιμοποιήσετε τις διαφορετικές μεθόδους συνδεδεμένης λίστας για να επιτύχετε το επιθυμητό αποτέλεσμα.

Μια συνδεδεμένη λίστα είναι μόνο μία από τις πολλές δομές δεδομένων που μπορείτε να χρησιμοποιήσετε για την αποθήκευση, ανάκτηση και διαγραφή δεδομένων. Αφού έχετε όλα όσα χρειάζεστε για να ξεκινήσετε, γιατί να μην δοκιμάσετε αυτά τα παραδείγματα για τον εαυτό σας στην Java;

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Πώς να δημιουργήσετε και να εκτελέσετε λειτουργίες σε πίνακες σε Java

Μαθαίνετε Java; Αφήστε τους πίνακες να χειρίζονται τα δεδομένα σας με ευκολία.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Ιάβα
  • Προγραμματισμός
  • Συμβουλές κωδικοποίησης
Σχετικά με τον Συγγραφέα Καντέισα Κιν(Δημοσιεύθηκαν 21 άρθρα)

Ο Kadeisha Kean είναι προγραμματιστής λογισμικού πλήρους στοίβας και τεχνικός/συγγραφέας τεχνολογίας. Έχει την ξεχωριστή ικανότητα να απλοποιήσει μερικές από τις πιο πολύπλοκες τεχνολογικές έννοιες. παραγωγή υλικού που μπορεί εύκολα να γίνει κατανοητό από κάθε αρχάριο τεχνολογίας. Είναι παθιασμένη με τη συγγραφή, την ανάπτυξη ενδιαφέροντος λογισμικού και τα ταξίδια στον κόσμο (μέσω ντοκιμαντέρ).

Περισσότερα από τον Kadeisha Kean

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή