Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων."— Μεταγράφημα παρουσίασης:

1 ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων

2 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 2 Δομές Δεδομένων (Data Structures) Καινούργιοι τύ π οι δεδομένων π ου α π οτελούνται α π ό την ομαδο π οίηση υ π αρχόντων τύ π ων δεδομένων Ομαδο π οίηση π ληροφορίας π ου δεν μ π ορεί να α π οθηκευτεί σε μία μόνον μεταβλητή α π ό τους δοσμένους τύ π ους της C Συλλογή μη διατεταγμένων και ομοιογενών τιμών Πλεονέκτημα : Καλύτερη οργάνωση – διαχείριση π ληροφορίας π ιο ευέλικτος σχεδιασμός ΌνομαΤίτλος # Ταυτότητας ΜισθόςΧρόνια Κώσταςδιευθυντής Α ΠΛ Υ π άλληλοςΒ ΑΛ Υ π άλληλοςΒ ΒΛ Υ π άλληλοςΒ

3 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 3 Ορισμός Δομών Ορισμός νέου τύ π ου δομής struct employee { char *name; char title[20]; char id[8]; double salary; int years; }e; Τα name, title, id, salary, years ονομάζονται τα μέλη ή π εδία της δομής To employee ονομάζεται η ετικέτα της δομής nametitle idsalary years e

4 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 4 Δήλωση Μεταβλητών Τύ π ου Δομής struct employee e1, e2; struct employee *pe; struct employee manager = { “AB”, “manager”, “A11111”, 2000, 2}; struct employee e3 = {0}; // μηδενίζει όλα τα στοιχεία

5 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 5 Χρήση Δομών Σαν κανονικές μεταβλητές για την α π οθήκευση π ληροφορίας Σαν ορίσματα σε Συναρτήσεις : void printEmployee( struct employee e); Σαν ε π ιστρεφόμενες τιμές α π ό συναρτήσεις : struct employee newEmployee(char *name, char *pos, char *id, double sal, int y); Σαν ε π ιστρεφόμενες τιμές α π ό συναρτήσεις ως δείκτες : struct employee *newEmployee(char *name, char *pos, char *id, double sal, int y);

6 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 6 Πρόσβαση στα Περιεχόμενα της Δομής struct point { int x; int y; } p; Με τον τελεστή. ( τελεία ) α π οκτούμε π ρόσβαση στα μέλη της δομής p.x = p.y = 10;

7 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 7 Εμφωλιασμένες Δομές Δομές ως μέλη άλλων δομών είναι ε π ιτρε π τά : struct point { int x; int y; }; struct rectangle { struct point topleftcorner; struct point bottomrightcorner; } rect1; Πρόσβαση με διαδοχικές τελείες (.) rect1.topleftcorner.x = 10; Παίρνουμε το π εδίο x του π εδίου topleftcorner της μεταβλητής rect1 bottomrightcorner topleftcorner xy xy rect1

8 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 8 Πίνακες α π ό Δομές Ό π ως και για κάθε άλλο τύ π ο : struct point { int x; int y; } p; struct point points[100]; points[2].x = 10;

9 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 9 Δείκτες σε Δομές struct employee { char *name; char title[20]; char id[8]; double salary; int years; }; // Δήλωση της δομής employee struct employee *e ; // Δήλωση της μεταβλητής e ως δείκτης σε δομή. struct employee d; // Δήλωση της μεταβλητής d ως δομή τύπου employee e = &d; // το e παίρνει τιμή την διεύθυνση της δομής d e = (struct employee *) malloc(100*sizeof(struct employee)); // το e είναι δείκτης σε πίνακα 100 στοιχείων struct employee e[0].salary = 1000;

10 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 10 Δείκτες σε Δομές struct employee *e; Πρόσβαση στα π εριεχόμενα του δείκτη – (*e) τα π εριεχόμενα του δείκτη είναι η δομή – (*e).title το π εδίο title της δομής π ου δείχνει ο e – e[0].title συνώνυμο του π αρα π άνω – e->title συνώνυμο του π αρα π άνω Προσοχή στις π ροτεραιότητες των τελεστών : – (*e).title – *e.title είναι ισοδύναμο με *(e.title) π ου δεν είναι α π οδεκτό για την συγκεκριμένη δήλωση του e

11 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 11 Ε π ιτρε π τές Πράξεις σε Δομές struct point { int x; int y; } p1, p2; Αντιγραφή p1 = p2; Α π όδοση τιμής σαν σύνολο με λίστα σταθερών τιμών για τα μέλη : p1 = {5, 6}; Εξαγωγή διεύθυνσης : &p1 Προσ π έλαση των μελών : p1.x ΔΕΝ ΕΠΙΤΡΕΠΕΤ AI η σύγκριση δομών fread(), fwrite()

12 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 12 Δομή Δεδομένων : Πίνακας Οργάνωση των δεδομένων : – το ένα μετά το άλλο στην μνήμη Τελεστές : – Δημιουργία π ίνακα με συγκεκριμένο αριθμό στοιχείων – Α π οδέσμευση π ίνακα με συγκεκριμένο αριθμό στοιχείων – Εισαγωγή στοιχείου σε συγκεκριμένη θέση – Ανάκτηση ενός στοιχείου α π ό δεδομένη θέση Αλγόριθμοι : τους π εριέχει ο μεταγλωττιστής της C – int a[100]; ή a = (int *)malloc(100 * sizeof(int)); – με το π έρας της εμβέλειας του a ή free(a); – a[34] = 7; – b = a[36];

13 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 13 Πίνακας Οργάνωση των δεδομένων : θεωρούμε τα δεδομένα μας διατεταγμένα ( το ένα ακολουθεί το άλλο ) // Δημιουργία struct employee *newEmployee(int number) { struct employee *e; int i; e = (struct employee *)malloc(number*sizeof(struct employee )); for (i = 0; i < number; ++i) e[i].salary = 1000; return e; } // επέκταση e = (struct employee *)realloc(e,number*sizeof(struct employee )); // Διαγραφή … // Αναζήτηση … // Εκτύπωση …

14 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 14 Πρόγραμμα Δημιουργεί ένα δυναμικό π ίνακα α π ό τυχαία σημεία του χώρου. Υ π ολογίζει όλα τα δυνατά τρίγωνα π ου δημιουργούνται α π ό τα σημεία αυτά και τα εκτυ π ώνει. Μετά διαγράφει τυχαία κά π οια μέλη του π ίνακα και τυ π ώνει ξανά τα τρίγωνα. Μετά α π οδεσμεύει τη μνήμη του π ίνακα.

15 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 15 Typedef Ορισμός νέων ονομάτων για τους τύ π ους των μεταβλητών typedef τυ π ος όνομα ; – Κάνει συνώνυμο το όνομα με τον τύ π ο – typedef unsigned long int size_t Το size_t γίνεται συνώνυμο του unsigned long int Αντί unsigned long int var1 ; – size_t var ;

16 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 16 Παραδείγματα typedef typedef struct employee employee; employee e; typedef struct employee { char *name; char title[20]; } Employee; Χωρίς την typedef μ π ροστά δηλώνει μια μεταβλητή τύ π ου struct employee. Με την typedef δηλώνει ότι το όνομα Employee είναι συνώνυμο του struct employee.

17 ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Αυτοαναφορικές Δομές Δυναμικές Δομές Δεδομένων : Λίστες

18 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 18 Αυτοαναφορικές Δομές Δομές π ου π εριέχουν ως μέλη δείκτες σε δομές ίδιου τύ π ου struct node { int x; struct node *next; };

19 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 19 Αυτοαναφορικές Δομές x next ?

20 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 20 Αυτοαναφορικές Δομές xx next NULL x next

21 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 21 Αυτοαναφορικές Δομές Με π ερισσότερους α π ό ένα δείκτες μ π ορούμε να έχουμε π ολύ π ολύ π λοκες δομές δεδομένων struct node { int x; struct node *first; struct node *sec; struct node *third; };

22 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 22 Αυτοαναφορικές Δομές x first sec third x first sec third x first sec third x first sec third NULL Τι είδους συνδεσμολογίες έχουν νόημα και είναι χρήσιμες; Τα NULL δηλώνουν ότι δεν δείχνει πουθενά ο δείκτης

23 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 23 Δείκτες, Πίνακες και Δομές Δήλωση του τύ π ου – struct somestruct *ptr; Τι είναι και π ως έχουμε π ρόσβαση ; Περί π τωση 1: – μια μοναδική μεταβλητή τύ π ου struct somestruct – Πρόσβαση : ptr->member – Δέσμευση μνήμης Στατικά : – struct somestruct a; – ptr = &a; Δυναμικά : – ptr = (struct somestruct *)malloc(sizeof(struct somestruct ));

24 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 24 Δείκτες, Πίνακες και Δομές Δήλωση του τύ π ου – struct somestruct *ptr; Περί π τωση 2: – ένας π ίνακας α π ό μεταβλητές τύ π ου struct somestruct – Πρόσβαση : ptr[index].member – Δέσμευση μνήμης Στατικά : – struct somestruct a[100]; – ptr = a; ή ptr = &a[0]; Δυναμικά : – ptr = (struct somestruct *)malloc(100*sizeof(struct somestruct));

25 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 25 Δείκτες, Πίνακες και Δομές Δήλωση του τύ π ου – struct somestruct *ptr; Περί π τωση 3: – μια δυναμική δομή δεδομένων με στοιχεία μεταβλητές τύ π ου struct somestruct – Πρόσβαση : εξαρτάται α π ό την δομή δεδομένων – Δέσμευση μνήμης : εξαρτάται α π ό την δομή δεδομένων Ο π ρογραμματιστής π ρέ π ει να ξέρει την σημασιολογία της ptr και να την χρησιμο π οιεί ανάλογα !

26 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 26 Δομές Δεδομένων Ορισμός : – Μια συλλογή δεδομένων οργανωμένα με συγκεκριμένο τρό π ο + ένα σύνολο τελεστών π ου ε π ενεργούν π άνω στην συλλογή + αλγόριθμοι π ου υλο π οιούν τους τελεστές Δέντρα ( δυαδικά και μη, B, R, Red-Black, κτλ ) Γράφοι ( διαταγμένοι, με βάρη, α π λοί ή όχι, υ π εργράφοι κτλ ) Λίστες, ουρές, στοίβες, π ίνακες, π ίνακες κατακερματισμού (hash tables)

27 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 27 Α π λά Συνδεδεμένη Λίστα Οργάνωση των δεδομένων : – θεωρούμε τα δεδομένα μας διατεταγμένα ( το ένα ακολουθεί το άλλο ) – το καθένα δείχνει στο ε π όμενο του στην μνήμη struct node { int x; struct node *next; }; struct node *root; x=5x=15 next NULL x=-2 next root

28 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 28 Α π λά Συνδεδεμένη Λίστα Τελεστές : – Δημιουργία κενής λίστας – Α π οδέσμευση λίστας – Εισαγωγή στοιχείου μετά α π ό ένα στοιχείο – Διάσχιση της λίστας – Ανάκτηση ενός στοιχείου με συγκεκριμένο π εριεχόμενο

29 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 29 Α π λά Συνδεδεμένη Λίστα Αλγόριθμοι : Ας τους φτιάξουμε ! Εισαγωγής Διαγραφής Αναζήτησης Εκτύ π ωση …

30 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 30 Δι π λά Συνδεδεμένη Λίστα Οργάνωση των δεδομένων : – θεωρούμε τα δεδομένα μας διατεταγμένα ( το ένα ακολουθεί το άλλο ) – το καθένα δείχνει στο ε π όμενο και στο π ροηγούμενο του στην μνήμη struct node { int x; struct node *next; struct node *prev; }; NULL x=5 next prev x=15 next prev x=-2 next prev

31 ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμ π ούλης 31 Πρόγραμμα Δημιουργεί μια α π λά συνδεδεμένη λίστα α π ό τυχαίους ακεραίους, τους εκτυ π ώνει. Μετά διαγράφει τυχαία κά π οια μέλη της λίστας και την ξανατυ π ώνει. Μετά α π οδεσμεύει τη μνήμη της λίστας.


Κατέβασμα ppt "ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google