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

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

Δημοσ.

Καλησπερα παιδια!

Εχω ενα προβλημα: Πως μπορω να δημιουργησω διασυνδεδεμενη λιστα? Το χω ψαξει πολυ αλλα δν τα καταφερνω με το συγκεκριμενο παραδειγμα. Μπορει καποιος να με βοηθησει??SOS

:unsure:

post-265789-0-63746300-1368360290_thumb.png

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ.

Ξερω πως δημιουργειται μια απλη διασυνδεδεμενη λιστα απλα σε αυτη τη μορφη δν μπορω να το φερω. Βρισκω μονο λιστες με ενα pointer για 1 node. Πως μπορω να κανω το struct να εχει pointers για 2 διαφορετικα nodes?

Δημοσ.

Αυτή είναι η δομή

typedef struct DLinkedListTAG
{
      int data;

      DLinkedListTAG *Prev;
      DLinkedListTAG *Next;

}DLinkedList;
Δημοσ.

Ξερω πως δημιουργειται μια απλη διασυνδεδεμενη λιστα απλα σε αυτη τη μορφη δν μπορω να το φερω. Βρισκω μονο λιστες με ενα pointer για 1 node. Πως μπορω να κανω το struct να εχει pointers για 2 διαφορετικα nodes?

 

 

Τι εννοείς βρίσκεις; Δεν το κατάλαβα... θέλεις να το κάνεις ή θες να το βρεις έτοιμο; 

 

Δημοσ.

να το κανω θελω απλα θελω να καταλαβω τον τροπο..ενα παραδειγμα θελω να βρω και να συνεχισω με τη λυση του.

Δημοσ.
struct s_stili {
int stoixeio;
struct s_stili *next;
};

struct s_grammi {
struct s_stili stili;
struct s_grammi *next;
};
Αν κατάλαβα καλά αυτό δεν είναι η δομή της φωτογραφίας ? Αυτό που σου έδωσε ο sonyxp (και που θα μπορούσες να δεις σε χιλιάδες sites στο internet) είναι έτοιμη η δομή αλλά για "μονή" λίστα. Από αυτό λοιπόν και από το σχηματικό σου δεν μπορούσες να φανταστείς πως θα ήταν η "διπλή" ?
Δημοσ.

μπορεις να εισαι λιγο πιο ευγενικος??? :blink:  <_< 

δεν εχω καταλαβει αν θα χρειαστω 2 pointers (για τ πρωτο node που πηγαίνει σε 2 λίστες) και πως γινεται η συνδεση των Pointers?

Δημοσ.

μπορεις να εισαι λιγο πιο ευγενικος??? :blink:  <_<

Γιατί ? Ήμουν αγενής ?

 

δεν εχω καταλαβει αν θα χρειαστω 2 pointers (για τ πρωτο node που πηγαίνει σε 2 λίστες) και πως γινεται η συνδεση των Pointers?

Η λίστα είναι μια δομή που περιέχει δύο variables (υπερ-απλούστευση εννοείται αλλά χάριν ευκολίας ας υποθέσουμε ότι είναι έτσι). Το ένα variable είναι τα δεδομένα μας και έχει τύπο που εξαρτάται από το τι θέλουμε να αποθηκεύσουμε (πχ int) και το άλλο variable είναι δείκτης της ίδιας της δομής που χρησιμεύει στο να μας δείχνει στο επόμενο μέλος.

 

Ας έρθουμε τώρα στο σχηματικό σου. Όπως βλέπουμε, η δομή "Στήλη" έχει δύο μέλη όπως περιγράψαμε ότι έχει μια λίστα. Το ένα είναι δείκτης στο επόμενο στοιχείο (ή στο κενό αν δεν υπάρχει επόμενο στοιχείο) και το άλλο είναι αριθμητικού τύπου όπως βλέπουμε από τα 10,20,30,κτλ του σχηματικού.

 

Η δομή "Γραμμή" όπως βλέπεις έχει δύο μικρά κουτάκια τα οποία είναι και σε αυτή την περίπτωση τα μέλη που περιγράψαμε πριν. Το 2ο κουτάκι δείχνει στην επόμενη "Γραμμή" και το 1ο είναι τα "δεδομένα" κάθε γραμμής. Απλά αντί να έχουμε μια απλή μεταβλητή όπως int, τα δεδομένα είναι μια λίστα.

Δημοσ.

Καταλαβα τη λογικη της δομης. Την συνδεση των nodes δεν ξερω πως να την κανω.

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

Η κατακόρυφη αλυσίδα αποθηκεύει τις γραμμές του πίνακα που περιέχουν μη μηδενικά 
στοιχεία. Κάθε κόμβος αυτής της αλυσίδας δείχνει στην αρχή μίας οριζόντιας αλυσίδας που 
περιέχει τα μη μηδενικά στοιχεία της αντίστοιχης γραμμής του πίνακα. Συγκεκριμένα κάθε 
κόμβος αποθηκεύει τη στήλη που εμφανίζεται το μη μηδενικό στοιχείο καθώς και τη τιμή 
του.
Με βάση τη παραπάνω αναπαράσταση για αραιούς πίνακες θα πρέπει να υλοποιήσετε:
 

 

Πρόσθεση δύο αραιών πινάκων. Η είσοδος/ έξοδος από και προς το χρήστη θα γίνεται 
σύμφωνα με το σχήμα.
Δημοσ.

Από το σχήμα που δίνεις στο αρχικό ποστ, εγώ νομίζω πως οι δομές σου πρέπει να είναι κάπως έτσι...

struct Stili {
    int        id;
    int        stoixeio;
    struct Stili    *next;
};

struct Grammi {
    int        id;
    struct Stili    *stili;
    struct Grammi    *next;
};
Δημοσ.

Ναι, αυτο εχω κανει κι εγω. Μπορεις να μου κανεις ενα παραδειγμα με τη συνδεση των 2 πρωτων? Αυτο γινεται μεσα στη main? Αυτο δεν καταλαβαινω.

Δημοσ.

Βασικά τώρα που το ξαναβλέπω, μάλλον πρέπει να είναι κάπως έτσι...

 

struct BoxedData {
	int stili;
	int stoixeio;
};

struct Box {
	struct BoxedData data;
	struct Box	*next;
};

struct Grammi {
	int 		id;
	struct Box	*box;
	struct Grammi	*next;
};
 

Επιβεβαίωσέ το πρώτα πως είναι έτσι, πριν ξεκινήσεις να γράφεις κώδικα διασύνδεσης.

Δημοσ.
struct node1{
	int col;
	int elem;
	node1 *link2;
};

struct node{
	int row;
	node1 *link1;
	node *next;
};

Βασικα νομιζω πως ειναι ετσι ο κωδικας. Για τον κωδικα διασυνδεσης δν εχω καποια ιδεα πως θα βγει...

Δημοσ.

Για να γράψεις κώδικα διασύνδεσης πρέπει πρώτα να έχεις ξεκαθαρισμένο το πως είναι οι δομές και πως συνδέονται μεταξύ τους.

 

Διότι άλλο κώδικα θέλει π.χ. η 1η προσέγγιση κι άλλον η 2η.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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