Προς το περιεχόμενο

JAVA Διπλα Συνδεδεμενη Λιστα


aris2134

Προτεινόμενες αναρτήσεις

Δημοσ.

Αν μπορείτε να με βοηθήσετε στο παρακάτω προβλημα:

 

Με βάση την Double Linked List να γράψετε τον κώδικα της μεθόδου:

public static DoubleLinkedList uniqueList(DoubleLinkedList source)

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

 

Παράδειγμα

Αρχική λίστα = [1 1 1 2 1 3 3 4 5 5 3 6 7 7 6 ]

Τελική λίστα = [1 2 1 3 4 5 3 6 7 6 ].

Θεωρούμε ότι η λίστα περιέχει Strings για διευκόλυνση των συγκρίσεων!!

 

Αυτο που εκανα ως τωρα είναι:

public static DoubleLinkedList uniqueList(DoubleLinkedList source)

{

DoubleLinkedList output = new DoubleLinkedList();

DLListNode temp = (DLListNode)source.getFirst();

while(temp!=null){

 

if(temp.equals(temp.getNextNode()))

temp.getNextNode();

else

if(!temp.equals(temp.getNextNode())){

output.insertLast(temp);

temp.getNextNode();

}

}

 

return output;

}

 

Οπου getFirst() ειναι το περιεχομενο του πρωτου κομβου.

Αν μπορει καποιος μια μικρή βοήθεια για το που κανω το λαθος.. :cry:

Δημοσ.
Κολλαει στη while, εφοσον δεν εχεις μια return μεσα στη while για να βγει (νομιζω)

 

βασικά και στη while να κολλάει δεν υπάρχει αυτό που λες =p

Δημοσ.

Δε μπορω να καταλβω , πως μπορει το temp να παρει τιμη Null ;:rolleyes:

Το λεω αυτο, γιατι το temp εχει το πρωτο node, στη πρωτη "λουπα" καλει τη getnext η οποια του επιστρεφει το επομενο, συκγρινει το επομενο με το πρωτο και ολα οκ εδω. Στη δευτερη λουπα κανει ακριβος το ιδιο, και στη ν, δηλαδη συκγρινει απειρα το πρωτο με το επομενο.

Δημοσ.
ε βασικά σε ενα linked list το τελευταίο node είναι null

 

Θα πρεπε τοτε στο while να είχε

 

while((temp.getnextNode)!=null) αντί για while(temp!=null)

Δημοσ.

Δεν ξέρω τι list implimentation χρησιμοποιέι αλλά από ότι βλέπεις στο τέλος όλων των iterations κάνει το getNextNode. Οπότε όχι, η ανησυχία σου και σένα δεν είναι απαραίτητα έγκυρη.

Δημοσ.

Τι να πω; Εγω βλεπω το παρακατω

>
           while (temp != null)
           {

               if (temp.equals(temp.getNextNode()))
                   temp.getNextNode();
               else
                   if (!temp.equals(temp.getNextNode()))
                   {
                       output.insertLast(temp);
                       temp.getNextNode();
                   }
           }

Το temp που ακριβος περνει τη τιμη null;:rolleyes:

Δημοσ.

temp.getNextNode();

 

Θα μπορούσε να το κάνει null. Αν και η ιδέα μου θα αν για implimentation του styl.

 

nodepointer = listIterator.getNextNode();

 

και να γίνει έτσι null. Αλλά δεν έχω χρησιμοποιήσει τέτοια data structures σε java.

 

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

 

edit (clarification): Το null το επιστρέφει μέσα από τη λίστα.

Δημοσ.

Το temp.getNextNode () δε νομιζω οτι κανει null το TEMP.

 

αυτό που επιστρεφει η μεθοδος getNextNode μπορεί να είναι null. Για αυτο είπα και παραπάνω να δοκιμάσει να αλλάξει τη συνθηκή του loop.

 

Το temp είναι αντικείμενο, instance κάποιας κλάσσης.

Δημοσ.
nick[;2684036']Το temp.getNextNode () δε νομιζω οτι κανει null το TEMP.

 

αυτό που επιστρεφει η μεθοδος getNextNode μπορεί να είναι null. Για αυτο είπα και παραπάνω να δοκιμάσει να αλλάξει τη συνθηκή του loop.

 

Το temp είναι αντικείμενο' date=' instance κάποιας κλάσσης.[/quote']

 

Ακριβος αυτο με σκαλωσε, ενα instance κλασης δεν μπορει να γινει null απο μονη της (καλωντας μια συναρτηση).

Δημοσ.

Ρε παιδιά τι λέτε; η getNextNode() επιστρέφει αυτό που δείχνει το next reference το τορινού κόμβου. Αν ο τορινός κόμβος δεν έχει επόμενο τότε το reference είναι null, άρα η μέθοδος επιστρέφει null.

 

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

Αρχειοθετημένο

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

  • Δημιουργία νέου...