AfterForever Δημοσ. 9 Μαΐου 2006 Δημοσ. 9 Μαΐου 2006 Καλησπέρα. Έχω μια εργασία με συνδεδεμένες λίστες και το ερώτημά μου είναι το εξής. Όταν προσπελαύνω μια λίστα (list=list->next) και μετά θέλω να πάω πάλι στην αρχή της ή τέλοσπάντων κάπου ενδιάμεσα, πως γίνεται αυτό; struct listnode { float sind; unsigned int ekth; Listptr next; }; Αυτή είναι η λίστα μου. Το πρόβλημα πως προέκυψε; Θέλω να προσπελάσω 2 λίστες κατ' αυτόν τον τρόπο. while(list1!=NULL){ while(list2!=NULL){ .......; list2=list2->next; } list1=list1->next; } Το θέμα είναι ότι αν οι λίστες έχουν πχ 2 στοιχεία η κάθε μία, τότε μετά τις 2 πρώτες επαναλήψεις το list2 θα δείχνει NULL. Οπότε θα πρέπει να βάλω μια εντολή κάτω από το list1=list1->next που να κάνει το list2 να δείχνει στο πρώτο στοιχείο. Υπάρχει τέτοια δυνατότητα; Ευχαριστώ
SoPTeP Δημοσ. 9 Μαΐου 2006 Δημοσ. 9 Μαΐου 2006 Μπορεις να εχεις ενα pointer start2 που να δειχνει στην αρχη της λιστας 2, οποτε σε καθε επαναληψη μπορεις να επανερχεσαι. start2 = list2; while(list1!=NULL){ list2 = start2; while(list2!=NULL){ .......; list2=list2->next; } list1=list1->next; } Φυσικα και ειναι επιτρεπτο κατι τετοιο, εκτος αν για διαφορους λογους η ασκηση δεν στο επιτρεπει. Ελπιζω να απαντησα στο προβλημα σου.
AfterForever Δημοσ. 10 Μαΐου 2006 Μέλος Δημοσ. 10 Μαΐου 2006 Πολύ λογικό, απλό και έξυπνο! Ευχαριστώ, δούλεψε μια χαρά!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.