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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Ανασκόπηση σε Δείκτες, Ουρές, Στοίβες, Συνδεδεμένες Λίστες
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Γλώσσα C & Unix Τμήμα Πληροφορικής, ΑΠΘ B’ εξάμηνο
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Διαφάνειες παρουσίασης #3
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
6-1 ΜΑΘΗΜΑ 6 ο Ανασκόπηση σε Δείκτες, Συνδεδεμένες Λίστες, Ουρές, Στοίβες.
ΗΜΜΥ 111 ΔΟΜΗΜΕΝΟΣΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΩΣΤΑΣ ΚΟΝΤΟΓΙΑΝΝΗΣ Αναπληρωτής Καθηγητής Τμήμα ΗΜΜΥ Πολυτεχνείο Κρήτης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
7-1 ΜΑΘΗΜΑ 7 ο Περισσότερα για Κυκλικές και Διπλά Διασυνδεόμενες Λίστες, Συναρτήσεις Βιβλιοθήκης, Διαχείριση Αρχείων.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΑΝΑΘΕΣΗ ΣΥΜΒΑΣΕΩΝ ΥΠΗΡΕΣΙΩΝ & ΠΡΟΜΗΘΕΙΩΝ
ΚΕΦΑΛΑΙΟΥΧΙΚΕΣ ΕΤΑΙΡΙΕΣ 4 ο Πακέτο Σημειώσεων Εισηγήτρια : Δοξαστάκη Κάλλια 4 ο Πακέτο Σημειώσεων Εισηγήτρια : Δοξαστάκη Κάλλια.
ΕΝΝΟΙΑ & ΔΙΑΚΡΙΣΕΙΣ ΚΟΣΤΟΥΣ ΕΝΝΟΙΑ & ΔΙΑΚΡΙΣΕΙΣ ΚΟΣΤΟΥΣ ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ Τ.Ε.Ι. ΚΡΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ.
ΣΥΜΜΟΡΦΩΣΗ ΣΕ ΔΙΚΑΣΤΙΚΕΣ ΑΠΟΦΑΣΕΙΣ Εισηγητές: - Κωνσταντίνος Μπλάγας, Δ/νων Σύμβουλος ΔήμοςΝΕΤ - Καλλιόπη Παπαδοπούλου, Νομική Σύμβουλος ΔήμοςΝΕΤ.
«Διγλωσσία και Εκπαίδευση» Διδάσκων: Γογωνάς Ν. Φοιτήτρια: Πέτρου Μαρία (Α.Μ )
Π.Γ.Ε.Σ.Σ ΚΑΡΝΑΡΟΥ ΧΡΙΣΤΙΝΑ Β2ΘΡΗΣΚΕΥΤΙΚΑ ΚΕΦΑΛΑΙΟ 5 ΣΕΛΙΔΕΣ ΕΡΓΑΣΙΕΣ Α-Δ.
ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ ΤΕΧΝΙΚΕΣ ΚΟΣΤΟΛΟΓΗΣΗΣ Αποφάσεις Βάσει Οριακής & Πλήρους Κοστολόγησης Α.Τ.Ε.Ι. ΚΡΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΠΟΦΑΣΕΙΣ ΒΑΣΕΙ ΟΡΙΑΚΗΣ.
Μεταναστευτικό και Προσφυγικό ζήτημα Η κατάσταση σήμερα ΑΘΑΝΑΣΙΟΥ ΑΠΟΣΤΟΛΟΣ ΓΑΝΩΤΟΠΟΥΛΟΣ ΑΛΕΞΑΝΔΡΟΣ ΕΥΑΓΓΕΛΙΝΟΣ ΛΕΥΤΕΡΗΣ ΣΧΙΖΑΣ ΑΝΤΩΝΗΣ.
Υπεύθυνη καθηγήτρια: Ε. Γκόνου Μαθητές: Ρωμανός Πετρίδης, Βαγγέλης Πίπης Π.Γ.Ε.Σ.Σ ….Θανέειν πέπρωται άπασι.
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
ΦΟΡΟΛΟΓΙΚΟ ΔΙΚΑΙΟ Ι Συνυπολογισμός προηγούμενων δωρεών ή γονικών παροχών για σκοπούς φόρου κληρονομίας Διδάσκων καθηγητής: Α. Τσουρουφλής Εξηνταβελώνη.
ΟΙ ΑΡΓΥΡΟΙ ΚΑΙ ΧΡΥΣΟΙ ΚΑΝΟΝΕΣ ΤΗΣ ΛΥΣΗΣ
Οι Αριθμοί … 5.
EPL231 – Data Structures and Algorithms
Σύστημα πρόσβασης στην Τριτοβάθμια Εκπαίδευση
מבני נתונים ויעילות אלגוריתמים
АНТИБИОТИКЛАРНИНГ ФАРМАКОЛОГИЯСИ т.ф.д., проф. Алиев Х.У Тошкент 2014
Μεταγράφημα παρουσίασης:

ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Διαφάνειες παρουσίασης #10 4 Υλοποίηση ουράς 4 Υλοποίηση στοίβας 4 Ταξινομημένες λίστες 4 Κυκλικές λίστες

2Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(i) u Υλοποίηση με απλά συνδεδεμένη λίστα typedef struct list_tag { int data; struct list_tag * next; } ListNode; u Τύπος queue typedef struct { ListNode * first; ListNode * last; } queue;

3Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(ii) u Άδεια ουρά const queue queueEmpty = { NULL, NULL }; u Εισαγωγή στοιχείου void queueInsert (queue * qp, int t) { ListNode * n = (ListNode *) malloc(sizeof(ListNode)); if (n == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); }

4Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(iii) u Εισαγωγή στοιχείου (συνέχεια) n->data = t; if (qp->last == NULL) qp->first = qp->last = n; else { qp->last->next = n; qp->last = n; } }

5Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(iv) u Αφαίρεση στοιχείου int queueRemove (queue * qp) { ListNode * n; int result; if (qp->first == NULL) { fprintf(stderr, "Nothing to remove" " from an empty queue\n"); exit(1); }

6Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(v) u Αφαίρεση στοιχείου (συνέχεια) n = qp->first; result = qp->first->data; qp->first = qp->first->next; free(n); if (qp->first == NULL) qp->last = NULL; return result; }

7Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση ουράς(vi) u Εξέταση στοιχείου int queueHead (queue q) { if (q.first == NULL) { fprintf(stderr, "Nothing to see" " in an empty queue\n"); exit(1); } return q.first->data; }

8Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση στοίβας(i) u Τύπος stack typedef ListNode * stack; u Άδεια στοίβα const stack stackEmpty = NULL; u Εισαγωγή στοιχείου void stackPush (stack * sp, int t) { ListNode * n = (ListNode *) malloc(sizeof(ListNode)); if (n == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); }

9Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση στοίβας(ii) u Εισαγωγή στοιχείου (συνέχεια) n->data = t; n->next = *sp; *sp = n; } u Αφαίρεση στοιχείου int stackPop (stack * sp) { ListNode * n; int result; if (*sp == NULL) { fprintf(stderr, "Nothing to remove" " from an empty stack\n"); exit(1); }

10Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση στοίβας(iii) u Αφαίρεση στοιχείου (συνέχεια) n = *sp; result = (*sp)->data; *sp = (*sp)->next; free(n); return result; }

11Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Υλοποίηση στοίβας(iv) u Εξέταση στοιχείου int stackTop (stack s) { if (s == NULL) { fprintf(stderr, "Nothing to see" " in an empty stack\n"); exit(1); } return s->data; }

12Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ταξινομημένες λίστες(i) u Τύπος slist typedef ListNode * slist; u Άδεια λίστα const slist slistEmpty = NULL; u Εισαγωγή στοιχείου void slistInsert (slist * lp, int t) { ListNode * n = (ListNode *) malloc(sizeof(ListNode)); if (n == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); }

13Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ταξινομημένες λίστες(ii) u Εισαγωγή στοιχείου (συνέχεια) n->data = t; while (*lp != NULL && (*lp)->data < t) lp = &((*lp)->next); n->next = *lp; *lp = n; }

14Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ταξινομημένες λίστες (iii) u Αφαίρεση στοιχείου void slistRemove (slist * lp, int t) { ListNode * n; while (*lp != NULL && (*lp)->data < t) lp = &((*lp)->next); if (*lp == NULL) { fprintf(stderr, "The element was" " not found\n"); exit(1); }

15Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Ταξινομημένες λίστες (iv) u Αφαίρεση στοιχείου (συνέχεια) n = *lp; *lp = (*lp)->next; free(n); } u Εκτύπωση στοιχείων void slistPrint (slist l) { while (l != NULL) { printf("%d\n", l->data); l = l->next; } }

16Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(i) u Τύπος clist typedef struct { ListNode * first; ListNode * last; } clist u Άδεια λίστα const clist clistEmpty = { NULL, NULL }; firstlast

17Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(ii) u Εισαγωγή στοιχείου void clistInsert (clist * lp, int t) { ListNode * n = (ListNode *) malloc(sizeof(ListNode)); if (n == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); } n->data = t;

18Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(iii) u Εισαγωγή στοιχείου (συνέχεια) if (lp->first == NULL) { lp->first = lp->last = n; n->next = n; } else { n->next = lp->first; lp->last->next = n; lp->last = n; } }

19Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(iv) u Αφαίρεση στοιχείου int clistRemove (clist * lp) { int result; if (lp->first == NULL) { fprintf(stderr, "Nothing to remove" " from empty list\n"); exit(1); } result = lp->first->data;

20Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(v) u Αφαίρεση στοιχείου (συνέχεια) if (lp->first == lp->last) { free(lp->first); lp->first = lp->last = NULL; } else { lp->first = lp->first->next; free(lp->last->next); lp->last->next = lp->first; } return result; }

21Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(vi) u Κυκλική κίνηση void clistMove (clist * lp) { if (lp->first != NULL) { lp->first = lp->first->next; lp->last = lp->last->next; } }

22Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Κυκλικές λίστες(vii) u Εκτύπωση στοιχείων void clistPrint (clist l) { ListNode * n; for (n = l.first; n != NULL; n = n->next) { printf("%d\n", n->data); if (n->next == l.first) break; } }