Συνδεση πινακα με λιστα στην c++

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 08 Απρ 2015 13:56

Καλησπερα.
Μηπως γνωριζει καποιος πως μπορω να εχω εναν πινακα και απο καθε θεση του πινακα να ξεκιναει μια λιστα που να συνδεεται με αυτη τη θεση του πινακα?
Πχ ας πουμε εχουμε εναν πινακα με ονοματα και θελω απο καθε ονομα να ξεκιναει μια λιστα με τα μερη που εχει επισκεφθει ο καθενας.
Με ποιον τροπο μπορω να το υλοποιησω αυτο στη c++?

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από gvre » 08 Απρ 2015 15:11

Η υλοποίηση εξαρτάται από το αν θα χρησιμοποιήσεις C ή C++, καθώς επίσης και αν χρησιμοποιήσεις ή όχι κάποιον έτοιμο container της C++ (στη 2η περίπτωση).
Μια λύση είναι να αποθηκεύεις σε κάθε θέση του πίνακα έναν pointer προς την αρχή της λίστας με τα μέρη που έχει επισκεφθεί ο συγκεκριμένος χρήστης. Προφανώς, θα χρειαστείς άλλον ένα πίνακα για την αντιστοίχιση των ονομάτων με τα μέρη. Δηλαδή, το όνομα που βρίσκεται στη θέση 0 του 1ου πίνακα έχει επισκεφθεί τα μέρη που βρίσκονται στην αντίστοιχη θέση (0) του 2ου πίνακα.
Ένας άλλος τρόπος είναι να αποθηκεύεις ένα struct σε κάθε θέση, το οποίο θα έχει 2 στοιχεία, το όνομα και τη λίστα με τα μέρη που έχει επισκεφθεί.

pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 08 Απρ 2015 18:14

Μια λύση είναι να αποθηκεύεις σε κάθε θέση του πίνακα έναν pointer προς την αρχή της λίστας με τα μέρη που έχει επισκεφθεί ο συγκεκριμένος χρήστης. Προφανώς, θα χρειαστείς άλλον ένα πίνακα για την αντιστοίχιση των ονομάτων με τα μέρη. Δηλαδή, το όνομα που βρίσκεται στη θέση 0 του 1ου πίνακα έχει επισκεφθεί τα μέρη που βρίσκονται στην αντίστοιχη θέση (0) του 2ου πίνακα.
Αυτο θελω να κανω.Πιστευα οτι υπηρχε τροπος να το κανω με εναν πινακα.Στην υλοποιηση θα χρησιμοποιησω c++.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από gvre » 08 Απρ 2015 19:01

Φτιάξε μια κλάση με τα πεδία που χρειάζεσαι (όνομα, μέρη) και βάλε κάθε θέση τού πίνακα να δείξει στο κάθε object που θα δημιουργήσεις (μια θέση / object). Για τα μέρη μπορείς να χρησιμοποιήσεις list ή forward_list, αν ο compiler σου το υποστηρίζει. Aναφέρω μόνο λίστες και όχι π.χ. vector, επειδή αυτό γράφεις στο θέμα.

pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 09 Απρ 2015 00:11

Ανεφερα μονο λιστες γιατι πρεπει να το κανω με λιστα.

Σχετικα με την κλαση εννοεις κατι σαν και αυτο?

Κώδικας: Επιλογή όλων

class basicStruct
{
public:
    basicStruct();
    ~basicStruct();
    void insert();
    void deLete();
    

private:
    string name;
    list<string> places;
    
&#125;;

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από gvre » 09 Απρ 2015 08:37

Ναι, κάτι τέτοιο. Μπορείς να αλλάξεις το όνομα της κλάσης σε κάτι πιο σχετικό (πχ. Person) και να προσθέσεις μεθόδους για καθορισμό του name και προσθήκη στο places. Λογικά, θα χρειαστεί να τυπώσεις τα στοιχεία αυτά, οπότε θέλεις και μια GetName(), GetPlaces().

pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 09 Απρ 2015 11:21

Σ'ευχαριστω παρα πολυ!!!

pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 05 Μάιος 2015 22:09

Καλησπερα και παλι.Για να μην ανοιξω αλλο θεμα,αφου η απορια μου ειναι για την παρουσα εργασια,θα συνεχισω εδω.
Λοιπον εχω υλοποιησει προγραμματιστικα ολο τον αλγοριθμο,εκτος απο ενα σημειο.Σε καποια φαση εχω ενα if else,στο οποιο if εφοσον μια συνθηκη ειναι αληθης,βαζω ενα ονομα σε μια λιστα και εναν αριθμο σε μια αλλη λιστα με την list.push_back().Στο else πρεπει να βρω τον αριθμο που εχω στη συνθηκη και να τον βγαλω απο τη λιστα.Μεχρι εδω ολα καλα.
Το προβλημα μου ειναι οτι θα πρεπει να βρω και το αντιστοιχο στοιχειο της αλλης λιστας που περιεχει τα ονοματα,πχ αν ο αριθμος ηταν εβδομος στη λιστα που διεγραψα,θα πρεπει να διαγραψω και το εβδομο ονομα απο την αλλη λιστα.Δηλαδη οι δυο λιστες συνδεονται.
Δεν εχω βρει τροπο να το κανω.Μηπως η προσεγγιση μου ειναι λαθος;Υπαρχει καποιος αλλος τροπος να το κανω;


pol2005
Δημοσιεύσεις: 58
Εγγραφή: 26 Δεκ 2008 20:50

Συνδεση πινακα με λιστα στην c++

Δημοσίευση από pol2005 » 06 Μάιος 2015 21:39

Σ'ευχαριστω πολυ για αλλη μια φορα!!

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης