Εντοπίστε τον κόμβο της συνδεδεμένη λίστα που καταργείτε . Σε αυτό το παράδειγμα , οι κόμβοι του διπλά συνδεδεμένη λίστα που αντιπροσωπεύεται από το στοιχείο δεδομένων " listItem ", το οποίο περιέχει μια συμβολοσειρά ( αποθηκεύονται ως "αξία" ) και δύο αναφορές σε άλλα ListItems : μία "προηγούμενη" σε αυτό και ένα " μετά " είναι στη λίστα. Η λειτουργία " FindItem " διατρέχει τη λίστα μέχρι να βρουν τον κόμβο που περιέχει την τιμή συμβολοσειράς , επιστρέφει μια αναφορά σε αυτόν τον κόμβο :
δημόσια listItem FindItem ( String λέξη ) {
listItem τρέχουσες = κεφαλή ? //κεφαλή της λίστας
ενώ ( current.value = λέξη ! ) { ρεύμα = current.next ? }
επιστροφής ρεύματος ? } 2
Δημιουργήστε το σκελετό μιας συνάρτησης για να αφαιρέσετε τον κόμβο . Αυτή η λειτουργία θα καλέσει " FindItem " για να εντοπίσετε τον κόμβο :
DeleteItem δημόσια άκυρη ( String λέξη ) {
listItem αφαίρεση = FindItem ( λέξη ) ?
}
Η 3
Τροποποιήστε τη λειτουργία " DeleteItem " για να συνδέσουν το προηγούμενο κόμβο στον ακόλουθο κόμβο . Για να εξασφαλιστεί ότι η διπλά συνδεδεμένη λίστα παραμένει αδιάσπαστη , το προηγούμενο κόμβο πρέπει να συνδέεται με το υπόλοιπο του καταλόγου μετά από τον κόμβο :
DeleteItem δημόσια άκυρη ( String λέξη ) {
listItem αφαίρεση = FindItem ( λέξη ) ? removing.previous.after = removing.after ? //ο προηγούμενος κόμβος συνδέει με το ακόλουθο κόμβο }
Η 4
Τροποποιήστε τη λειτουργία " DeleteItem " για να συνδέσουν το ακόλουθο κόμβο στο προηγούμενο κόμβο . Για να ολοκληρώσετε τη σύνδεση και τη διατήρηση της λίστας ως διπλά συνδεδεμένη λίστα , μετά από τον κόμβο του διαγράφεται κόμβου πρέπει τώρα να συνδέσει πίσω στον προηγούμενο κόμβο του διαγράφεται κόμβου :
public void DeleteItem ( String λέξη ) {
listItem αφαίρεση = FindItem ( λέξη ) ?
removing.previous.after = removing.after ? removing.after.previous = removing.previous ? //ακόλουθο κόμβο συνδέει με τον προηγούμενο κόμβο }
5
Διαγραφή του κόμβου :
DeleteItem δημόσια άκυρη ( String λέξη ) {
listItem αφαίρεση = FindItem ( λέξη ) ?
removing.previous.after = removing.after ? removing.after.previous = removing.previous ?
αφαίρεση = null? }
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα