baskat Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Καλησπερα παιδια!Εχω ενα προβλημα: Πως μπορω να δημιουργησω διασυνδεδεμενη λιστα? Το χω ψαξει πολυ αλλα δν τα καταφερνω με το συγκεκριμενο παραδειγμα. Μπορει καποιος να με βοηθησει??SOS
Timonkaipumpa Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Τι εννοείς το έχεις ψάξει πολύ; Θα μπορούσες να πεις τι έψαξες, για να ξέρουμε και να σε βοηθήσουμε;
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 Ξερω πως δημιουργειται μια απλη διασυνδεδεμενη λιστα απλα σε αυτη τη μορφη δν μπορω να το φερω. Βρισκω μονο λιστες με ενα pointer για 1 node. Πως μπορω να κανω το struct να εχει pointers για 2 διαφορετικα nodes?
sonyxp Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Αυτή είναι η δομή typedef struct DLinkedListTAG { int data; DLinkedListTAG *Prev; DLinkedListTAG *Next; }DLinkedList;
Timonkaipumpa Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Ξερω πως δημιουργειται μια απλη διασυνδεδεμενη λιστα απλα σε αυτη τη μορφη δν μπορω να το φερω. Βρισκω μονο λιστες με ενα pointer για 1 node. Πως μπορω να κανω το struct να εχει pointers για 2 διαφορετικα nodes? Τι εννοείς βρίσκεις; Δεν το κατάλαβα... θέλεις να το κάνεις ή θες να το βρεις έτοιμο;
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 να το κανω θελω απλα θελω να καταλαβω τον τροπο..ενα παραδειγμα θελω να βρω και να συνεχισω με τη λυση του.
imitheos Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 struct s_stili { int stoixeio; struct s_stili *next; }; struct s_grammi { struct s_stili stili; struct s_grammi *next; }; Αν κατάλαβα καλά αυτό δεν είναι η δομή της φωτογραφίας ? Αυτό που σου έδωσε ο sonyxp (και που θα μπορούσες να δεις σε χιλιάδες sites στο internet) είναι έτοιμη η δομή αλλά για "μονή" λίστα. Από αυτό λοιπόν και από το σχηματικό σου δεν μπορούσες να φανταστείς πως θα ήταν η "διπλή" ?
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 μπορεις να εισαι λιγο πιο ευγενικος??? δεν εχω καταλαβει αν θα χρειαστω 2 pointers (για τ πρωτο node που πηγαίνει σε 2 λίστες) και πως γινεται η συνδεση των Pointers?
imitheos Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 μπορεις να εισαι λιγο πιο ευγενικος??? Γιατί ? Ήμουν αγενής ? δεν εχω καταλαβει αν θα χρειαστω 2 pointers (για τ πρωτο node που πηγαίνει σε 2 λίστες) και πως γινεται η συνδεση των Pointers? Η λίστα είναι μια δομή που περιέχει δύο variables (υπερ-απλούστευση εννοείται αλλά χάριν ευκολίας ας υποθέσουμε ότι είναι έτσι). Το ένα variable είναι τα δεδομένα μας και έχει τύπο που εξαρτάται από το τι θέλουμε να αποθηκεύσουμε (πχ int) και το άλλο variable είναι δείκτης της ίδιας της δομής που χρησιμεύει στο να μας δείχνει στο επόμενο μέλος. Ας έρθουμε τώρα στο σχηματικό σου. Όπως βλέπουμε, η δομή "Στήλη" έχει δύο μέλη όπως περιγράψαμε ότι έχει μια λίστα. Το ένα είναι δείκτης στο επόμενο στοιχείο (ή στο κενό αν δεν υπάρχει επόμενο στοιχείο) και το άλλο είναι αριθμητικού τύπου όπως βλέπουμε από τα 10,20,30,κτλ του σχηματικού. Η δομή "Γραμμή" όπως βλέπεις έχει δύο μικρά κουτάκια τα οποία είναι και σε αυτή την περίπτωση τα μέλη που περιγράψαμε πριν. Το 2ο κουτάκι δείχνει στην επόμενη "Γραμμή" και το 1ο είναι τα "δεδομένα" κάθε γραμμής. Απλά αντί να έχουμε μια απλή μεταβλητή όπως int, τα δεδομένα είναι μια λίστα.
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 Καταλαβα τη λογικη της δομης. Την συνδεση των nodes δεν ξερω πως να την κανω. Ακομη, η δομη γραμμη εχει 3 κουτακια. Το πρωτο ειναι το δεδομενο. Το 2ο μας πηγαινει στη δομη στηλη και το τριτο στην επομενη γραμμη. (Το προβλημα ειναι αναπαρασταση αραιου πινακα σε λιστα). Η κατακόρυφη αλυσίδα αποθηκεύει τις γραμμές του πίνακα που περιέχουν μη μηδενικά στοιχεία. Κάθε κόμβος αυτής της αλυσίδας δείχνει στην αρχή μίας οριζόντιας αλυσίδας που περιέχει τα μη μηδενικά στοιχεία της αντίστοιχης γραμμής του πίνακα. Συγκεκριμένα κάθε κόμβος αποθηκεύει τη στήλη που εμφανίζεται το μη μηδενικό στοιχείο καθώς και τη τιμή του. Με βάση τη παραπάνω αναπαράσταση για αραιούς πίνακες θα πρέπει να υλοποιήσετε: Πρόσθεση δύο αραιών πινάκων. Η είσοδος/ έξοδος από και προς το χρήστη θα γίνεται σύμφωνα με το σχήμα.
migf1 Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Από το σχήμα που δίνεις στο αρχικό ποστ, εγώ νομίζω πως οι δομές σου πρέπει να είναι κάπως έτσι... struct Stili { int id; int stoixeio; struct Stili *next; }; struct Grammi { int id; struct Stili *stili; struct Grammi *next; };
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 Ναι, αυτο εχω κανει κι εγω. Μπορεις να μου κανεις ενα παραδειγμα με τη συνδεση των 2 πρωτων? Αυτο γινεται μεσα στη main? Αυτο δεν καταλαβαινω.
migf1 Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Βασικά τώρα που το ξαναβλέπω, μάλλον πρέπει να είναι κάπως έτσι... struct BoxedData { int stili; int stoixeio; }; struct Box { struct BoxedData data; struct Box *next; }; struct Grammi { int id; struct Box *box; struct Grammi *next; }; Επιβεβαίωσέ το πρώτα πως είναι έτσι, πριν ξεκινήσεις να γράφεις κώδικα διασύνδεσης.
baskat Δημοσ. 12 Μαΐου 2013 Μέλος Δημοσ. 12 Μαΐου 2013 struct node1{ int col; int elem; node1 *link2; }; struct node{ int row; node1 *link1; node *next; }; Βασικα νομιζω πως ειναι ετσι ο κωδικας. Για τον κωδικα διασυνδεσης δν εχω καποια ιδεα πως θα βγει...
migf1 Δημοσ. 12 Μαΐου 2013 Δημοσ. 12 Μαΐου 2013 Για να γράψεις κώδικα διασύνδεσης πρέπει πρώτα να έχεις ξεκαθαρισμένο το πως είναι οι δομές και πως συνδέονται μεταξύ τους. Διότι άλλο κώδικα θέλει π.χ. η 1η προσέγγιση κι άλλον η 2η.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα