Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Πώς να ανιχνεύσει μια κυκλικότητα σε ένα Linked List σε Java

Η γλώσσα προγραμματισμού Java περιέχει πολλές ενσωματωμένες δομές δεδομένων, όπως πίνακες κατακερματισμού και συνδεδεμένη λίστα . Ωστόσο , μπορείτε να το βρείτε χρήσιμο να εφαρμόσουν το δικό σας συγκεκριμένο τύπο δομής δεδομένων με βάση τις ανάγκες σας . Λόγω αυτού του γεγονότος συχνά θα θέλετε να δημιουργήσετε τις δικές σας μεθόδους για να καθορίσει τη λειτουργικότητα της δομής των δεδομένων . Ενώ η οικοδόμηση ενός συνδεδεμένη λίστα μπορεί να θέλετε να καθοριστεί εάν ή όχι η λίστα είναι κυκλική . Ένα κυκλικό λίστα είναι ένα στο οποίο το τέλος της λίστας παραπέμπει στην αρχή της λίστας . Έλεγχος για αυτό είναι τόσο απλή όσο την πλοήγηση στη λίστα και να καθοριστεί εάν ή όχι να επιστρέψετε στην αρχή της λίστας . Τα πράγματα που θα χρειαστείτε
Java Development Kit ( JDK )
επεξεργαστή κειμένου
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Δημιουργήστε μια λειτουργία για να ελέγξετε για τη λίστα της κυκλικότητας . Αυτή η λειτουργία θα επιστρέψει " True" , αν η λίστα είναι κυκλική , και "False " αλλιώς . Ορίστε αυτή τη λειτουργία μέσα στην τάξη κατάλογο :

κατηγορίας LL {

public boolean isCircular ( ) { } } 2

Δημιουργήστε μια θηλιά στη λειτουργία για να διασχίσει το λίστα . Ο βρόχος θα ξεκινήσει στην κορυφή της λειτουργίας , και να περάσουν από κάθε κόμβο σε ολόκληρη τη λίστα , που αντιπροσωπεύεται από το " Node" τύπο δεδομένων , μέχρι να φτάσει " null " ( στο τέλος της λίστας ) :

public boolean isCircular ( ) {

κόμβου ρεύμα = head.next ? //ξεκινά από τον κόμβο μετά από τον κόμβο κεφαλής

ενώ ( ρεύμα = null ! ) { } }

με 3

Χρησιμοποιήστε το βρόχο για να ελέγξετε κάθε κόμβο στη λίστα . Εάν ο τρέχων κόμβος είναι ο κόμβος της κεφαλής , αυτό σημαίνει ότι ο βρόχος έχει διαγράψει ολόκληρη τη λίστα και εκκαθάριση πίσω στην αρχή , πράγμα που σημαίνει ότι η λίστα είναι κυκλική . Αν ο βρόχος χτυπά μια " μηδενική " τιμή η λίστα δεν είναι κυκλική :

isCircular public boolean ( ) {

κόμβου ρεύμα = head.next ? //Αρχίζει στον κόμβο μετά από το κεφάλι κόμβο

ενώ ( ρεύμα = null ! ) {if ( ρεύμα == κεφάλι ) {επιστροφή True ? } επιστροφή ψευδείς? } }
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα