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

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

ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:

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


Παρουσίαση με θέμα: "ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:"— Μεταγράφημα παρουσίασης:

1 ΛΟΓ102: Τεχνολογία Λογισμικού Ι nickie@softlab.ntua.gr Διδάσκων: Νίκος Παπασπύρου http://www.softlab.ntua.gr/~nickie/TUC/log102/ 1Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Διαφάνειες παρουσίασης #9 4 Συνδεδεμένες λίστες 4 Απλά συνδεδεμένες λίστες 4 Ουρές 4 Στοίβες

2 2Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(i) u Συνδεδεμένες λίστες l Χρησιμεύουν για την υλοποίηση δομών δεδομένων Δεν επιβάλλουν περιορισμούς στο πλήθος των δεδομένων που χωράνε αυτές οι δομές u Το πρόβλημα με τους πίνακες client c[1000]; for (i=0; !f.eof(); i++) fread(&(c[i]), 1, sizeof(client), f); l Τί γίνεται αν το αρχείο f έχει 1249 πελάτες;

3 3Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(ii) u Η ιδέα της συνδεδεμένης λίστας l Η λίστα είναι ένα σύνολο από κόμβους l Κάθε κόμβος περιέχει πληροφορίες και έναν ή περισσότερους συνδέσμους προς άλλους κόμβους ΠΣΠΣ

4 4Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Απλά συνδεδεμένες λίστες(i) u Είναι γραμμικές διατάξεις u Κάθε κόμβος περιέχει ένα σύνδεσμο στον επόμενο κόμβο u Ο τελευταίος κόμβος έχει κενό σύνδεσμο

5 5Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Απλά συνδεδεμένες λίστες(ii) u Παράδειγμα: λίστα ακεραίων struct node_tag { int data; struct node_tag * next; }; typedef struct node_tag Node, * LinkedList; u Κενή λίστα

6 6Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Απλά συνδεδεμένες λίστες(iii) u Προσθήκη στοιχείων l απόφαση πού θα προστεθεί l δημιουργία νέου κόμβου l αντιγραφή πληροφορίας l σύνδεση νέου κόμβου i i εδώ

7 7Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Απλά συνδεδεμένες λίστες(iv) u Αφαίρεση στοιχείων l απόφαση ποιο στοιχείο θα αφαιρεθεί l καταστροφή κόμβου l σύνδεση υπόλοιπων κόμβων αυτό

8 8Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ουρές(i) u First In First Out (FIFO) ό,τι μπαίνει πρώτο, βγαίνει πρώτο u Ουρά ακεραίων ΑΤΔ: queue l const queue empty; l void insert (queue * qp, int t); l int remove (queue * qp); l int head (queue q);

9 9Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ουρές(ii) u Παράδειγμα queue q = empty; insert(&q, 5); insert(&q, 7); printf("%d\n", remove(&q)); insert(&q, 13); printf("%d\n", head(q)); printf("%d\n", remove(&q));

10 10Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ουρές(iii) u Υλοποίηση με απλά συνδεδεμένη λίστα firstlast

11 11Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Στοίβες(i) u Last In First Out (LIFO) ό,τι μπαίνει τελευταίο, βγαίνει πρώτο u Στοίβα ακεραίων ΑΤΔ: stack l const stack empty; l void push (stack * sp, int t); l int pop (stack * sp); l int top (stack s);

12 12Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Στοίβες(ii) u Παράδειγμα stack s = empty; push(&s, 5); push(&s, 7); printf("%d\n", pop(&s)); push(&s, 13); printf("%d\n", top(s)); printf("%d\n", pop(&s));

13 13Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Στοίβες(iii) u Υλοποίηση με απλά συνδεδεμένη λίστα first


Κατέβασμα ppt "ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:"

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


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