freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

C Πρόβλημα με δυο λίστες στο ίδιο πρόγραμμα


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [4 Μηνύματα]      Bookmarks Tags: Πρόγραμμα Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
edessakis


Μέλος από: 01 Φεβ 2008
Μηνύματα: 8

View users profile
ΜήνυμαΣτις: 27 Απρ 2009 23:37    Θέμα: C Πρόβλημα με δυο λίστες στο ίδιο πρόγραμμα Απάντηση με παράθεση  Mark this post and the followings unread

Γεια χαρά παιδιά

Έχω μια εργασία όπου θα πρέπει να χρησιμοποιήσω δυο ίδιες λίστες στο ίδιο πρόγραμμα.
Πιθανότατα έχω μπερδέψει κάποια πράγματα στη θεωρία των λιστών και δεν μπορώ να τα ξεκαθαρίσω.
Ας πούμε δηλώνοντας:


κώδικας:
struct list{
      int data;
      struct list * next;
};


τι ακριβώς δηλώνω; Μια λίστα με το όνομα list ή μια δομή την οποία μπορώ να χρησιμοποιήσω
αναθέτοντάς την σε δυο ξεχωριστές λίστες π.χ. list_1 & list_2.
Κι αν συμβαίνει αυτό ποιός είναι ο κώδικας της ανάθεσης;
Αν πάλι δεν συμβαίνει τι κάνω; Δηλώνω τις δυο λίστες ως εξής:


κώδικας:
struct list_1{
      int data;
      struct list_1 * next;
};

struct list_2{
      int data;
      struct list_2 * next;
};


και τις προσπελαύνω με δυο διαφορετικούς δείκτες head π.χ. head1 & head2;

Αυτό είναι κυρίως το μπέρδεμά μου.
Ευχαριστώ.
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 28 Απρ 2009 00:45    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

όταν δηλώνεις ενα struct δημιουργείται ένας νέος τύπος δεδομένων που είναι επαναχρησιμοποιήσημος, όπως πχ ένας integer

πχ:

κώδικας:

struct point
{
    int x;
    int y;
};



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

δηλαδή:
κώδικας:

int main(void)
{
     point shmeio1,shmeio2;
     
     shmeio1.x = 5;
     shmeio1.y = 10;
     shmeio2.x = 12;
     shmeio2.y = 7;
}


Έτσι κι στην περίπτωσή σου, θές ένα struct που να αντιπροσωπεύει ένα κόμβο μιας λίστας...
με τον όρο head συνήθως εννοούμε τον pointer που δείχνει στον πρώτο κόμβο της.

Όταν δηλώσεις δηλαδή δύο pointers του τύπου node(κόμβος), και μετά τους βάλεις να δείχνουν σε δεσμευμένους από το heap κόμβους (μέσω της malloc) τότε θα έχεις τον πρώτο κόμβο κάθε λίστας...
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 28 Απρ 2009 11:51    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

δηλώνεις μία δομή που προσομειάζει το σκεπτικό υλοποίησης μιας λίστας

για να φτιάξεις μία απλή λίστα μιας κατευθυνσης χρειάζεσαι μία δομή
που θα έχει δεδομένα και ένα δείκτη στο επόμενο στοιχείο μιας λίστας.
Να έχεις στον νου σου ότι φτιάχνεις μία αλυσίδα.Αν σπάσει σε ένα σημείο την χάνεις από κει και κάτω

επειδή και το επόμενο στοιχείο της λίστας θα έχει την ίδια δομή
βάζεις στην δήλωση της struct list "αναδρομική κλήση" μέσα της για να δηλώσεις δείκτη
σε επόμενο στοιχείο της ίδιας δομής.

όσον αφορά τις 2 λίστες αφού είναι ίδιες χρειάζεσαι ένα μόνο struct list το αρχικό δηλαδή
που αναφέρεις.Απλά στην main σου θα ορίσεις 2 μεταβλητές τύπου struct list
την head1 και την head2 που θα είναι οι κεφαλές-αρχές των λιστών σου με βάση τις
οποίες θα χειρίζεσαι τις λίστες σου.
Ομοίως τις current1 ,current2 (struct list) με τις οποίες θα δημιουργείς
νέο κόμβο για να τον εισάγεις σε κάθε λίστα.


δες και αυτό.



Κεφ 7 - ΛΙΣΤΕΣ.zip
 Description:

Download
 Filename:  Κεφ 7 - ΛΙΣΤΕΣ.zip
 Filesize:  354.61 KB
 Downloaded:  1939 Time(s)

edessakis


Μέλος από: 01 Φεβ 2008
Μηνύματα: 8

View users profile
ΜήνυμαΣτις: 28 Απρ 2009 14:44    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Παιδιά ευχαριστώ πολύ και τους δυο για την πολύτιμη βοήθειά σας.
Μετά από όσα μου δώσατε ξεπέταξα όλη την υποεργασία μέσα σε 3 ώρες.
Είναι παράξενο το πόσο εύκολα φαίνονται μερικά πράγματα όταν ξεκαθαρίσουν στο μυαλό σου.
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [4 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++


Σχετικά θέματα
 Θέματα   Απ/σεις   Αποστολέας   Τελευταίο μήνυμα 
Πώς τα πάμε από λίστες??SOS 1 karetta_seaworld 23 Ιουλ 2015 10:12
gvre Εμφάνιση τελευταίου μηνύματος
 
Τώρα είναι 06 Δεκ 2016 07:45 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos