aris2134 Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 Αν μπορείτε να με βοηθήσετε στο παρακάτω προβλημα: Με βάση την 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() ειναι το περιεχομενο του πρωτου κομβου. Αν μπορει καποιος μια μικρή βοήθεια για το που κανω το λαθος..
Evgenios1 Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 Κολλαει στη while, εφοσον δεν εχεις μια return μεσα στη while για να βγει (νομιζω)
ippo00 Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 Κολλαει στη while, εφοσον δεν εχεις μια return μεσα στη while για να βγει (νομιζω) βασικά και στη while να κολλάει δεν υπάρχει αυτό που λες =p
Evgenios1 Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 Δηλαδη, αν το getnext δεν εχει να επιστρεψει κατι, δε μπορεις να επιστρεψεις το output;
ippo00 Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 Βγαίνει από το loop μόλις τελιώσει το iteration και επσιτρέφει
Evgenios1 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Δε μπορω να καταλβω , πως μπορει το temp να παρει τιμη Null ; Το λεω αυτο, γιατι το temp εχει το πρωτο node, στη πρωτη "λουπα" καλει τη getnext η οποια του επιστρεφει το επομενο, συκγρινει το επομενο με το πρωτο και ολα οκ εδω. Στη δευτερη λουπα κανει ακριβος το ιδιο, και στη ν, δηλαδη συκγρινει απειρα το πρωτο με το επομενο.
ippo00 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 ε βασικά σε ενα linked list το τελευταίο node είναι null
-nick- Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 ε βασικά σε ενα linked list το τελευταίο node είναι null Θα πρεπε τοτε στο while να είχε while((temp.getnextNode)!=null) αντί για while(temp!=null)
ippo00 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Δεν ξέρω τι list implimentation χρησιμοποιέι αλλά από ότι βλέπεις στο τέλος όλων των iterations κάνει το getNextNode. Οπότε όχι, η ανησυχία σου και σένα δεν είναι απαραίτητα έγκυρη.
Evgenios1 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Τι να πω; Εγω βλεπω το παρακατω > while (temp != null) { if (temp.equals(temp.getNextNode())) temp.getNextNode(); else if (!temp.equals(temp.getNextNode())) { output.insertLast(temp); temp.getNextNode(); } } Το temp που ακριβος περνει τη τιμη null;
ippo00 Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 temp.getNextNode(); Θα μπορούσε να το κάνει null. Αν και η ιδέα μου θα αν για implimentation του styl. nodepointer = listIterator.getNextNode(); και να γίνει έτσι null. Αλλά δεν έχω χρησιμοποιήσει τέτοια data structures σε java. Όπως και να 'χει αυτό που λεω είναι ότι τα προβλήματα που τονίζετε μάλλον δεν είναι αυτά που υπάρχουν (δηλαδή έλεος με την επιστροφή μέσα από την επανάληψη) edit (clarification): Το null το επιστρέφει μέσα από τη λίστα.
-nick- Δημοσ. 25 Απριλίου 2009 Δημοσ. 25 Απριλίου 2009 Το temp.getNextNode () δε νομιζω οτι κανει null το TEMP. αυτό που επιστρεφει η μεθοδος getNextNode μπορεί να είναι null. Για αυτο είπα και παραπάνω να δοκιμάσει να αλλάξει τη συνθηκή του loop. Το temp είναι αντικείμενο, instance κάποιας κλάσσης.
Evgenios1 Δημοσ. 26 Απριλίου 2009 Δημοσ. 26 Απριλίου 2009 nick[;2684036']Το temp.getNextNode () δε νομιζω οτι κανει null το TEMP. αυτό που επιστρεφει η μεθοδος getNextNode μπορεί να είναι null. Για αυτο είπα και παραπάνω να δοκιμάσει να αλλάξει τη συνθηκή του loop. Το temp είναι αντικείμενο' date=' instance κάποιας κλάσσης.[/quote'] Ακριβος αυτο με σκαλωσε, ενα instance κλασης δεν μπορει να γινει null απο μονη της (καλωντας μια συναρτηση).
GrandGamer Δημοσ. 28 Απριλίου 2009 Δημοσ. 28 Απριλίου 2009 Ρε παιδιά τι λέτε; η getNextNode() επιστρέφει αυτό που δείχνει το next reference το τορινού κόμβου. Αν ο τορινός κόμβος δεν έχει επόμενο τότε το reference είναι null, άρα η μέθοδος επιστρέφει null. Τώρα όσον αφορά το πραγματικό πρόβλημα, έχεις κάνει override την equals για να παίρνει την τιμή του κόμβου; αν όχι τότε αυτό δεν κάνει αυτό που θες.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.