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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές στην C (επανάληψη)
Advertisements

Το αλφαριθμητικό (string)
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
ΠΙΝΑΚΕΣ ΜΑΘΗΜΑ 6.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Ανασκόπηση σε Δείκτες, Ουρές, Στοίβες, Συνδεδεμένες Λίστες
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Γλώσσα C & Unix Τμήμα Πληροφορικής, ΑΠΘ B’ εξάμηνο
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
Πίνακες-Αλφαριθμητικά
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Αντικειμενοστραφής Προγραμματισμός
ΜΑΘ 3122 (106) Γλώσσα προγραμματισμού
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
© GfK 2012 | Title of presentation | DD. Month
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Lab 10: Hash Tables with Chaining 20/11/2009Panayiotis Charalambous.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Ολυμπιάδα Πληροφορικής
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Δυναμική Διαχείριση Μνήμης (1/2)
Ουρά Προτεραιότητας: Heap
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Δείκτες (Pointers) – Δομές (Structs)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
MΑΘ 106/3122Ξενοφών Ζαμπούλης ΜΑΘ 106/3122 Γλώσσα Προγραμματισμού Δείκτες (Pointers)
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη C Ακέραιοι.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Δομές Δεδομένων.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
TEXNΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΜΑΘ106/3122 – Γλώσσα Προγραμματισμού Ξ. Ζαμπούλης ΜΑΘ106/3122 Γλώσσα Προγραμματισμού Δομές Δεδομένων.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Δομές.
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
EPL231 – Data Structures and Algorithms
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μεταγράφημα παρουσίασης:

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

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

ΗΥ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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 4 Αναπαράσταση στη μνήμη nametitleidsalaryyears struct employee

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

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

ΗΥ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

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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 9 Χρήση Δομών Σαν κανονικές μεταβλητές για την αποθήκευση πληροφορίας Σαν ορίσματα σε Συναρτήσεις: 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); Σε ποια περίπτωση θα χρησιμοποιούσατε το κάθε ένα;

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 10 Δείκτες σε Δομές 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 είναι δείκτης σε πίνακα 100 στοιχείων struct employee e = (struct employee *) malloc(100*sizeof(struct employee)); e[0].salary = 1000;

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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 12 Αριθμητική δεικτών struct employee *e; e++; Προχωράει κατά sizeof(struct employee);

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

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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 15 Πίνακας Οργάνωση των δεδομένων: θεωρούμε τα δεδομένα μας διατεταγμένα (το ένα ακολουθεί το άλλο) //Δημιουργία 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)); //Διαγραφή… //Αναζήτηση… //Εκτύπωση…

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

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

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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 19 Unions Παρόμοια με τα structs union time { long simpleDate; double perciseDate; } mytime; Κρατείται ο «μεγαλύτερος» τύπος

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 20 Unions: Example int main() { union data { char a; int x; float f; } myData; int mode = 1; myData.a = 'A'; printf("Here is the Data:\n%c\n%i\n%.3f\n", myData.a, myData.x, myData.f ); myData.x = 42; mode = 2; printf("Here is the Data: \n%c\n%i\n%.3f\n", myData.a, myData.x, myData.f ); myData.f = ; mode = 3; printf("Here is the Data: \n%c\n%i\n%.3f\n", myData.a, myData.x, myData.f ); if( mode == 1 ) printf("The char is being used\n"); else if( mode == 2 ) printf("The int is being used\n"); else if( mode == 3 ) printf("The float is being used\n"); return 0; }

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

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

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

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

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

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

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

ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης 28 Δείκτες, Πίνακες και Δομές Δήλωση του τύπου – 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));

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

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

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

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

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

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

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