Ενότητα 2 Στοίβες Ουρές - Λίστες
|
|
- Ἀλαλά Μαρής
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από έστω n 0 στοιχεία ή κόµβους, e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά. Το e 1 είναι το πρώτο στοιχείο της λίστας και το e n είναι το τελευταίο στοιχείο της λίστας. Το στοιχείο e k προηγείται του στοιχείου e k+1 και έπεται του στοιχείου e k-1, 1 < k < n. L : µήκος λίστας ( L = n) <>: κενή λίστα Λειτουργίες που συνήθως υποστηρίζονται από λίστες Access(L,j): Επιστρέφει το j-οστό στοιχείο της λίστας ή ένα µήνυµα λάθους αν j είναι > L. Length(L): Επιστρέφει L, το µήκος της λίστας. Concat(L 1,L 2 ): Επιστρέφει µια λίστα που είναι το αποτέλεσµα της συνένωσης των δύο λιστών L 1 και L 2 σε µία. MakeEmptyList(): επιστρέφει <>, την κενή λίστα. IsEmptyList(L): επιστρέφει true αν L == <>, false διαφορετικά. ΗΥ240 - Παναγιώτα Φατούρου 2 1
2 Τρόποι Υλοποίησης Λιστών Στατικές Λίστες Υλοποίηση µε πίνακες Όλα τα στοιχεία της λίστας αποθηκεύονται σε πίνακα. Συνδεδεµένες Λίστες Χρήση δεικτών P Σχήµα 1.4: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 ΗΥ240 - Παναγιώτα Φατούρου 3 Τρόποι Υλοποίησης Λιστών Θετικά δυναµικών έναντι στατικών λιστών J Εισαγωγή/διαγραφή νέων στοιχείων γίνεται εύκολα J Ο συνολικός αριθµός στοιχείων δεν χρειάζεται να είναι γνωστός εξ αρχής Αρνητικά δυναµικών έναντι στατικών λιστών L Απαιτούν περισσότερη µνήµη (λόγω των δεικτών). L Ποια είναι η πολυπλοκότητα χρόνου για την ανάκτηση του j-οστού στοιχείου στη λίστα; ΗΥ240 - Παναγιώτα Φατούρου 4 2
3 Στοίβες κορυφαίο Αφηρηµένος τύπος δεδοµένων Στοίβα (Stack) Μια στοίβα είναι µια λίστα που υποστηρίζει εισαγωγή και διαγραφή στοιχείων µόνο στο ένα της άκρο. Το στοιχείο που αφαιρείται είναι πάντα αυτό που έχει εισαχθεί πιο πρόσφατα. Λειτουργίες Top(S): επιστρέφει το κορυφαίο στοιχείο της S (δηλαδή αυτό που έχει εισαχθεί τελευταίο) Pop(S): διαγραφή και επιστροφή του κορυφαίου στοιχείου της S Push(x,S): εισαγωγή του στοιχείου x στην κορυφή της στοίβας MakeEmptyStack(): επιστρέφει την <>. IsEmptyStack(S): επιστρέφει true αν S = 0 και false διαφορετικά Η µέθοδος επεξεργασίας των δεδοµένων της στοίβας λέγεται «Εξαγωγή κατά ανάστροφη σειρά εισαγωγής» (Last In First Out, LIFO). e 4 e 3 e 2 e 1 ΗΥ240 - Παναγιώτα Φατούρου κορυφαίο Μετά την εισαγωγή στοιχείου (Push(1)) µε τιµή 1 κορυφαίο Μετά την εκτέλεση της λειτουργίας της διαγραφής (Pop()) Στατικές Στοίβες Υλοποίηση µε Πίνακα Μια στατική στοίβα υλοποιείται µε τη χρήση ενός µονοδιάστατου πίνακα Α και ενός ακεραίου Length που υποδηλώνει το τρέχον µέγεθος της στοίβας. Ο πίνακας έχει ένα προκαθορισµένο πλήθος θέσεων N. Μια στοίβα µε n N στοιχεία καταλαµβάνει τα στοιχεία Α[0],, Α[n-1] του πίνακα. q Το A[n-1] είναι το κορυφαίο (ή τελευταίο) στοιχείο της στοίβας q Το A[0] είναι το βαθύτερο (ή πρώτο) στοιχείο Έστω Type o τύπος των στοιχείων της στοίβας. Έστω S ένας δείκτης σε ένα struct που έχει δύο πεδία, τον πίνακα Α και τον ακέραιο Length και αναπαριστά µια στοίβα. q Αν S->Length == 0, η στοίβα είναι άδεια. q Αν S->Length == N, η στοίβα είναι γεµάτη. 512 n S Length A[0] A[n-1] A[N-1] ΗΥ240 - Παναγιώτα Φατούρου 6 3
4 Υλοποίηση Λειτουργιών Στοίβας Pointer MakeEmptyStack(void) pointer S; S = newcell(stack); S->Length = 0; return S; Χρονική Πολυπλοκότητα; Θ(1) boolean IsEmptyStack(pointer S) if (S->Length == 0) return 1; else return 0; Χρονική Πολυπλοκότητα; Θ(1) 512 n A[N] S Length A[0] A[n-1] A[N-1] Type Top(pointer S) if (IsEmptyStack(S)) then error; else (return((s->α)[s->length 1])); Χρονική Πολυπλοκότητα; Θ(1) Συνολικός Απαιτούµενος Χώρος Μνήµης; Ανεξάρτητα από τον αριθµό των στοιχείων που έχουν εισαχθεί στη στοίβα: Ν ΗΥ240 - Παναγιώτα Φατούρου 7 Υλοποίηση Λειτουργιών Στοίβας Type Pop(Pointer S) if (IsEmptyStack(S)) then error else { x = Top(S); S->Length = S->Length 1; return x; Χρονική Πολυπλοκότητα; Θ(1) A[N-1] A[4] A[3] A[2] A[1] A[0] top Length = 5 Length = 4 void Push(Pointer S,Type x) if (S->Length == N) then error else { S->Length = S->Length + 1; (S->A)[S->Length-1] = x; Χρονική Πολυπλοκότητα; Θ(1) A[3] top A[2] A[1] A[0] Length = 4 Length = 5 ΗΥ240 - Παναγιώτα Φατούρου 8 4
5 Πολλαπλή Στατική Στοίβα Περισσότερες από µια στοίβες που υλοποιούνται χρησιµοποιώντας έναν πίνακα. Παράδειγµα 1: Δύο Στοίβες Έστω Α[0Ν-1] ο πίνακας που χρησιµοποιείται για την αποθήκευση των στοιβών. Η 1 η στοίβα ξεκινάει από τη θέση Α[0] και αναπτύσσεται προς τα δεξιά, ενώ η 2 η ξεκινάει από τη θέση Α[Ν-1] και αναπτύσσεται προς τα αριστερά. κορυφαίο στοιχείο στοίβας 1 κορυφαίο στοιχείο στοίβας 2 Παράδειγµα 2: k Στοίβες Ο πίνακας χωρίζεται σε k ίσα τµήµατα (στο παρακάτω σχήµα k = 4). ΗΥ240 - Παναγιώτα Φατούρου 9 Στοίβα ως Συνδεδεµένη Λίστα pointer MakeEmptyStack() return NULL; Αρχικά S 000 (NULL) boolean IsEmptyStack(pointer S) if (S == NULL) return TRUE; else return FALSE; Type Top(pointer S) if IsEmptyStack(S) then error; else return S->data; F Μετά την εισαγωγή των D,E,F,A (µε αυτή τη σειρά) στη στοίβα 228 S A F E D Χρονική Πολυπλοκότητα κάθε µιας από τις παραπάνω λειτουργίες; Θ(1) E S ΗΥ240 - Παναγιώτα Φατούρου 10 5
6 222 D F A E S x x S P Χώρος στη µνήµη για τις µεταβλητές της Push Εισαγωγή σε Στοίβα x P 228 pointer Push(info x, pointer S) pointer P; /* temporary pointer */ P = NewCell(NODE); /* malloc() */ P->data = x; P->next = S; S = P; return S; Χρονική Πολυπλοκότητα; Θ(1) ΗΥ240 - Παναγιώτα Φατούρου D F A E S A S x Χώρος στη µνήµη για τις µεταβλητές της Pop Διαγραφή από Στοίβα <pointer, info> Pop(pointer S) info x; if (IsEmptyStack(S)) then error; else x = Top(S); S = S->next; return <S,x>; Χρονική Πολυπλοκότητα; Θ(1) 224 Μνήµη; δεδοµένα & (n+1) δείκτες (αν η στοίβα έχει n στοιχεία) ΗΥ240 - Παναγιώτα Φατούρου 12 6
7 Ουρά Αφηρηµένος Τύπος Δεδοµένων Ουρά (Queue) Λίστα που µπορεί να τροποποιείται µόνο µε την εισαγωγή στοιχείων στο ένα άκρο της και τη διαγραφή στοιχείων από το άλλο. Το στοιχείο που αφαιρείται είναι πάντα αυτό που έχει παραµείνει στην ουρά για το µεγαλύτερο χρονικό διάστηµα. Λειτουργίες Enqueue(x,Q): Εισαγωγή στοιχείου µε τιµή x στο τέλος (back) της ουράς Q Dequeue(Q): Διαγραφή του πρώτου στοιχείου (front) της Q και επιστροφή της τιµής του Front(Q): επιστρέφει το πρώτο στοιχείο της Q. MakeEmptyQueue(): επιστρέφει <>, την κενή ουρά. IsEmptyQueue(Q): επιστρέφει TRUE αν Q == <> και FALSE διαφορετικά. Η µέθοδος επεξεργασίας των δεδοµένων ουράς λέγεται «Εξαγωγή κατά σειρά εισαγωγής» (First In First Out, FIFO). Ουρά Q πρώτο τελευταίο Μετά την εκτέλεση της λειτουργίας Enqueue(Q,6) πρώτο πρώτο τελευταίο Μετά την εκτέλεση της λειτουργίας Dequeue(Q)) τελευταίο ΗΥ240 - Παναγιώτα Φατούρου 13 Στατικές Ουρές Υλοποίηση µε Πίνακα Η στατική ουρά υλοποιείται ως ένα struct (στη C) µε πεδία έναν πίνακα Α µε προκαθορισµένο πλήθος θέσεων N και δύο ακεραίους: q Length που υποδηλώνει το τρέχον µέγεθος της ουράς q Front που υποδηλώνει τη θέση του πρώτου στοιχείου της ουράς 512 Q στον πίνακα. Έστω Q ένας δείκτης στο struct µιας ουράς και έστω Type o τύπος των στοιχείων της ουράς. q Αν Q->Length == 0, η ουρά είναι άδεια. q Αν Q->Length == N, η ουρά είναι γεµάτη. q e 1,, e n : στοιχεία ουράς q A[Front mod N], A[(Front + 1) mod N],, A[(Front + n - 1) mod N]: θέσεις στις οποίες είναι αποθηκευµένα τα e 1,, e n. N-2 n e 3 Front Length A[0] = A[(Front + 2) % N] e n A[n-3]=A[(Front +n-1) % N] e 1 e 2 e 3 0 e 4 1 e 5 2 e e 1 8 e 2 9 A[N-2] = A[Front % N] A[N-1] = A[(Front + 1) % N] ΗΥ240 - Παναγιώτα Φατούρου 14 7
8 Υλοποίηση Λειτουργιών Ουράς pointer MakeEmptyQueue(void) pointer Q; /* temporary pointer */ Q = NewCell(Queue); /* malloc() */ Q->Front = 0; Q->Length = 0; return Q; Χρονική Πολυπλοκότητα; boolean IsEmptyQueue(pointer Q) if (Q->Length == 0) return 1; else return 0; Χρονική Πολυπλοκότητα; Θ(1) Q Front Length A[0] A[Ν-1] Type Front(pointer Q) if (IsEmptyQueue()) then error; else (return((q->α)[q->front])); Χρονική Πολυπλοκότητα; Θ(1) Συνολικός Απαιτούµενος Χώρος Μνήµης; Ανεξάρτητα από τον αριθµό των στοιχείων που έχουν εισαχθεί στην ουρά: Ν ΗΥ240 - Παναγιώτα Φατούρου 15 Υλοποίηση Λειτουργιών Ουράς Type Dequeue(pointer Q) if (IsEmptyQueue(Q)) then error else { x = Front(Q); Q->Front = (Q->Front+1) mod N; Q->Length = Q->Length 1; return x; Χρονική Πολυπλοκότητα; Θ(1) void Enqueue(pointer Q, Type x) if (Q->Length == N) then error else { Q->Length = Q->Length+1; (Q->A)[(Q->Front + Q->Length 1)% N] = x; Χρονική Πολυπλοκότητα; Θ(1) 512 N-2 n e 3 e n e 1 e 2 Enqueue() A[N-2] ΗΥ240 - Παναγιώτα Φατούρου e 2 A[N-1] 16 Q Front Length A[0] A[n-3] A[N-2] A[N-1] 512 Dequeue() 512 N-2 n+1 e 3 e n e n+1 e 1 N-1 n-1 e 3 e n e 1 e 2 Q Front Length A[0] A[n-3] A[n-2] Q Front Length A[0] A[n-3] A[N-2] A[N-1] 8
9 Ουρά ως Συνδεδεµένη Λίστα Node: struct µε πεδία: q data: πληροφορία αποθηκευµένη στο στοιχείο q next: δείκτης στο επόµενο στοιχείο Queue: struct µε πεδία δύο δείκτες: q Front: δείκτης στο πρώτο στοιχείο q Back: δείκτης στο τελευταίο στοιχείο pointer MakeEmptyQueue(void) pointer Q; /* temporary pointer */ Q = NewCell(Queue); /* malloc */ Q->Front = Q->Back = NULL; return Q; boolean IsEmptyQueue(pointer Q) if (Q->Front == NULL) then return TRUE; else return FALSE; Type Front(pointer Q) if (IsEmptyQueue(Q)) then error; else return ((Q->Front)->data); F Μετά την εισαγωγή των Α,F,E,D (µε αυτή τη σειρά) στην ουρά E Q Q NULL ΗΥ240 - Παναγιώτα Φατούρου 17 A NULL F Front Back Front Back E 412 Q D Χρονική Πολυπλοκότητα κάθε µιας από αυτές τις λειτουργίες; Θ(1) 1η Περίπτωση Q Εισαγωγή σε Ουρά 2η Περίπτωση 228 Front 412 Q 222 Back Front NULL Back NULL 416 P x 000 A F E D x P void Enqueue(Type x, pointer Q) pointer P; /* temporary pointer */ P = NewCell(Node); P->data = x; P->next = NULL; if (IsEmptyQueue(Q)) then Q->Front = P; else Q->Back->next = P; Q->Back = P; Χρονική Πολυπλοκότητα; Θ(1) ΗΥ240 - Παναγιώτα Φατούρου 18 9
10 1η Περίπτωση Q Διαγραφή από Ουρά 2η Περίπτωση 228 Front 412 Q 222 Back Front Back 000 D 000 A F E D Type Dequeue(pointer Q) if (IsEmptyQueue(Q)) then error; else { x = (Q->Front)->data; Q->Front = (Q->Front)->next; if (Q->Front == NULL) then Q->Back = NULL; return x; Χρονική Πολυπλοκότητα; Θ(1) Μνήµη; δεδοµένα & (n+3) δείκτες (αν η ουρά έχει n στοιχεία) ΗΥ240 - Παναγιώτα Φατούρου 19 Συνδεδεµένες Λίστες Έστω ότι κάθε στοιχείο της λίστας (struct node) έχει δύο πεδία, έναν ακέραιο data και το δείκτη next. Ένας δείκτης L δείχνει στο πρώτο στοιχείο της λίστας. L x P Εισαγωγή σε Λίστα void ListInsert(int x) pointer p; p = newcell(node); p->data = x; p->next = L; L = p; Αναζήτηση σε Λίστα boolean ListSearch(Type x) { pointer q = L; while (q!= NULL && q->data!= x) q = q->next; return (q!= NULL); Άσκηση: Υλοποιείστε τη Delete(). ΗΥ240 - Παναγιώτα Φατούρου 20 10
11 Κόµβος Φρουρός Προς επίλυση Πρόβληµα Αναζήτηση ενός στοιχείου x στη λίστα. Λύση µε κόµβο φρουρό q Έχουµε εξ αρχής τοποθετήσει ένα κόµβο στη λίστα που λέγεται κόµβος φρουρός. Ο κόµβος αυτός είναι πάντα ο τελευταίος στη λίστα και χρησιµοποιείται µόνο για τη διαχείριση της λίστας (δηλαδή δεν θεωρείται στοιχείο της λίστας). q Ένας δείκτης δείχνει µόνιµα σε αυτόν τον κόµβο. q Κατά την αναζήτηση, η τιµή που αναζητείται αρχικά αποθηκεύεται στον κόµβο αυτό (π.χ. στο πεδίο data του struct του). q Στη συνέχεια, εκτελείται διάσχιση της λίστας µε τον γνωστό αλγόριθµο αναζήτησης για τo στοιχείο αυτό. q Το στοιχείο θα βρεθεί σίγουρα, είτε νωρίτερα σε κάποια θέση άλλη από τον κόµβο φρουρό ή στον κόµβο φρουρό. q Στην 1 η περίπτωση, η αναζήτηση είναι επιτυχηµένη. q Στην 2 η περίπτωση, όχι. Τι κερδίζουµε µε τη χρήση κόµβου φρουρού; ΗΥ240 - Παναγιώτα Φατούρου 21 L boolean ListSearch(Type x) { pointer q = L; while (q!= NULL && q->data!= x) q = q->next; return (q == NULL); G Εισαγωγή Στοιχείου σε Tαξινοµηµένη Λίστα Κάθε κόµβος της λίστας περιέχει π.χ. έναν ακέραιο data και ένα δείκτη next στον επόµενο κόµβο. Έστω L ένας δείκτης στο πρώτο στοιχείο της λίστας. Η λίστα είναι ταξινοµηµένη. Πρόβληµα προς επίλυση Εισαγωγή νέου στοιχείου στη λίστα, έτσι ώστε η λίστα να εξακολουθήσει να είναι ταξινοµηµένη. Έστω x ο προς εισαγωγή ακέραιος. Πρόβληµα µε την εισαγωγή στοιχείου σε ταξινοµηµένη λίστα: Είναι δυνατή η εισαγωγή ενός στοιχείου µόνο ως επόµενου κόµβου κάποιου δεδοµένου κόµβου και όχι ως προηγούµενου. L B C F pointer q = L; while (q!= NULL && q->data < x) q = q->next; return (q == NULL); ΗΥ240 - Παναγιώτα Φατούρου 22 11
12 Εισαγωγή Στοιχείου σε Ταξινοµηµένη Λίστα void LLInsert(Type x, pointer L) pointer C, ptr; /* temporary pointers */ q = L; pq = NULL; while (q!= NULL) and (q->data < x) { pq = q; q = q->next; if (q!= NULL) and (q->data == x) then return; /* x is already in list */ p = NewCell(Node); /* malloc */ p->data = x; p->next = q; if (pq == NULL) then L = p; else pq->next = p; L pq E p B C F q ΗΥ240 - Παναγιώτα Φατούρου 23 Διάσχιση Λίστας Εκτέλεση επίσκεψης σε ένα ή σε κάποια στοιχεία µιας λίστας που έχουν µια ιδιότητα. Θεωρούµε λίστα που περιέχει αλφαριθµητικά (strings) και είναι λεξικογραφικά ταξινοµηµένη. Πρόβληµα 1 Δεδοµένου ενός αλφαριθµητικού w, ζητείται το τελευταίο αλφαριθµητικό στη λίστα που προηγείται αλφαβητικά του w και τελειώνει µε το ίδιο γράµµα όπως το w. Παράδειγµα w = crabapple L = <canary, cat, chickadee, coelacanth, collie, corn, cup>. H απάντηση θα πρέπει να είναι collie. ΗΥ240 - Παναγιώτα Φατούρου 24 12
13 Πιθανοί Αλγόριθµοι Επίλυσης Προβλήµατος 1 Αλγόριθµος 1 Διασχίζουµε τη λίστα µέχρι να βρούµε την πρώτη λέξη που είναι αλφαβητικά µεγαλύτερη από την crabapple (στο παράδειγµα την cup), κρατώντας σε µια στοίβα δείκτες στους κόµβους που διασχίσαµε. Εξάγουµε έναν-έναν τους δείκτες από τη στοίβα και εξετάζουµε τα structs στα οποία δείχνουν (µε αυτό τον τρόπο πραγµατοποιούµε αντίστροφη διάσχιση της λίστας) µέχρι να βρούµε την πρώτη λέξη που τελειώνει σε e top Είναι αυτή η πιο αποδοτική λύση; Αλγόριθµος 2 Διασχίζουµε τη λίστα ξεκινώντας από τον 1ο κόµβο της διατηρώντας ένα βοηθητικό δείκτη στο τελευταίο στοιχείο που διασχίσαµε και είχε την επιθυµητή ιδιότητα. Πως θα συγκρίνατε την πολυπλοκότητα των δύο αλγορίθµων? ΗΥ240 - Παναγιώτα Φατούρου 25 Διασχίσεις Zig-Zag Έστω ότι κάθε κόµβος της λίστας έχει τα εξής πεδία: q word: αλφαριθµητικό q num: ακέραιος q next: δείκτης στον επόµενο κόµβο Πρόβληµα 2 Δίδεται ένα αλφαριθµητικό w. Έστω ότι το w υπάρχει στη λίστα σε κάποιον κόµβο p του οποίου το πεδίο num έχει τιµή n. Αναζητείται η τιµή του πεδίου word του κόµβου που προηγείται του p κατά n θέσεις στη λίστα. Παρουσιάστε αλγόριθµο που να επιλύει το πρόβληµα. ΗΥ240 - Παναγιώτα Φατούρου 26 13
14 Διπλά Συνδεδεµένες Λίστες Σχήµα 3.5: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 Κάθε κόµβος µιας διπλά συνδεδεµένης λίστας αποθηκεύει δείκτες και προς το επόµενο και προς το προηγούµενο στοιχείο του κόµβου. Διασχίσεις Zig-Zag είναι εύκολα υλοποιήσιµες! ΗΥ240 - Παναγιώτα Φατούρου 27 Διπλά Συνδεδεµένες Λίστες Εισαγωγή κόµβου στον οποίο δείχνει ο δείκτης P µετά τον κόµβο στον οποίο δείχνει ο δείκτης Q void DoublyLinkedInsert(pointer P,Q) /* insert node pointed to by P just after node pointed to by Q */ P > Pr ev Q P > Next Q > Next Q > Next P Q > Next > Pr ev P Διαγραφή κόµβου P από τη λίστα void DoublyLinkedDelete(pointer P) /* delete node P from its doubly linked list */ P > Pr ev > Next P > Next P > Next > Pr ev P > Pr ev Α Β D E Σχήµα 3.5: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 ΗΥ240 - Παναγιώτα Φατούρου 28 14
15 Τεχνικές Επιµεριστικής Ανάλυσης Η επιµεριστική ανάλυση µελετά τη συµπεριφορά χειρότερης περίπτωσης ενός αλγορίθµου ή δοµής καθώς υποβάλλεται σε µια ακολουθία από n λειτουργίες. Μέθοδοι Επιµεριστικής Ανάλυσης Η αθροιστική µέθοδος Η λογιστική µέθοδος Η µέθοδος του δυναµικού (δεν θα διδαχθεί σε αυτό το µάθηµα) ΗΥ240 - Παναγιώτα Φατούρου 29 Μέθοδοι Επιµεριστικής Ανάλυσης Aθροιστική Μέθοδος Καθορισµός ενός πάνω φράγµατος T(n) στο συνολικό κόστος µιας ακολουθίας n λειτουργιών. Το επιµεριστικό κόστος κάθε λειτουργίας είναι T(n)/n. Λογιστική Μέθοδος Καθορισµός ενός επιµεριστικού κόστους για κάθε λειτουργία. Διαφορετικές λειτουργίες µπορεί να έχουν διαφορετικά επιµεριστικά κόστη. Το επιµεριστικό κόστος των λειτουργιών µπορεί να είναι µεγαλύτερο ή µικρότερο από το πραγµατικό τους κόστος. Η πίστωση από λειτουργίες µε µεγαλύτερο από το πραγµατικό επιµεριστικό κόστος αποθηκεύεται σε συγκεκριµένα αντικείµενα της δοµής και χρησιµοποιείται αργότερα για την «πληρωµή» λειτουργιών µε επιµεριστικό κόστος µικρότερο από το πραγµατικό τους. ΗΥ240 - Παναγιώτα Φατούρου 30 15
16 Επιµεριστική Ανάλυση Αθροιστική Μέθοδος Αποδεικνύουµε ότι n, οποιαδήποτε ακολουθία n λειτουργιών απαιτεί συνολικά το πολύ T(n) βήµατα. Παράδειγµα 1 Στοίβα µε MultiPop() Έστω µια δοµή στοίβας που υποστηρίζει τις ακόλουθες λειτουργίες: Push(x): Εισαγωγή του στοιχείου x στην κορυφή της στοίβας. Pop(): Διαγραφή και επιστροφή του στοιχείου που βρίσκεται στην κορυφή της στοίβας. MultiPop(k): Διαγραφή των k πρώτων (υψηλότερων) στοιχείων της στοίβας. Αν υπάρχουν λιγότερα από k στοιχεία στη στοίβα, διαγράφονται όλα. MultiPop(k) { while (!IsEmptyStack() AND k 0) { Pop(); k = k-1; 25 top (a) MultiPop(3) MultiPop(6) 5 top (β) (γ) ΗΥ240 - Παναγιώτα Φατούρου 31 Επιµεριστική Ανάλυση Αθροιστική Μέθοδος Η χρονική πολυπλοκότητα των Push() και Pop() είναι Ο(1). Θεωρούµε ότι το κόστος κάθε µιας εξ αυτών είναι 1. Ποιο είναι το κόστος της MultiPop(k) αν η στοίβα περιέχει s στοιχεία? Ο(min{s,k) Ποιο είναι το κόστος µιας ακολουθίας n λειτουργιών στη στοίβα; Εύρεση Αυστηρού Άνω Φράγµατος Ισχυρισµός: Κάθε ακολουθία από n Push(), Pop() και MultiPop() ξεκινώντας από µια άδεια στοίβα έχει χρονική πολυπλοκότητα Ο(n). Γιατί ισχύει αυτό; Το πλήθος των διαγραφών από τη στοίβα δεν µπορεί να υπερβαίνει το πλήθος των λειτουργιών Push() στη στοίβα. Το πλήθος των Pop() συµπεριλαµβανοµένων των Pop() που καλούνται από MultiPop() είναι το πολύ όσο το πλήθος των Push(). Το πλήθος των λειτουργιών Push() που θα εκτελεστούν είναι O(n). " Η επιµεριστική χρονική πολυπλοκότητα κάθε λειτουργίας είναι O(n)/n = O(1). ΗΥ240 - Παναγιώτα Φατούρου 32 Ο(n 2 ) 16
17 Επιµεριστική Ανάλυση - Λογιστική Μέθοδος Καθορισµός του επιµεριστικού κόστους κάθε λειτουργίας. Διαφορετικές λειτουργίες µπορεί να έχουν διαφορετικά επιµεριστικά κόστη. Το επιµεριστικό κόστος των λειτουργιών µπορεί να είναι µεγαλύτερο ή µικρότερο από το πραγµατικό τους κόστος. Το «κέρδος» από λειτουργίες µε µεγαλύτερο από το πραγµατικό επιµεριστικό κόστος αποθηκεύεται σε συγκεκριµένα αντικείµενα της δοµής ως πίστωση και χρησιµοποιείται αργότερα για την «πληρωµή» λειτουργιών µε επιµεριστικό κόστος µικρότερο από το πραγµατικό τους. Το συνολικό επιµεριστικό κόστος οποιασδήποτε ακολουθίας λειτουργιών πρέπει να αποτελεί άνω φράγµα του συνολικού πραγµατικού κόστους της ακολουθίας Το συνολικό κέρδος (πίστωση) που είναι συσχετισµένο µε τα αντικείµενα της δοµής κάθε χρονική στιγµή πρέπει να είναι µη-αρνητικό. Παρατήρηση Σε αντίθεση µε την αθροιστική µέθοδο, η λογιστική µέθοδος δεν αποδίδει το ίδιο επιµεριστικό κόστος σε κάθε λειτουργία. ΗΥ240 - Παναγιώτα Φατούρου 33 Επιµεριστική Ανάλυση - Λογιστική Μέθοδος Παράδειγµα 1 Στοίβα που υποστηρίζει τη λειτουργία MultiPop() Πραγµατικό Κόστος Λειτουργιών Push() 1 Pop() 1 MultiPop(k) min{k,s Επιµεριστικό Κόστος Λειτουργιών Push() 2 Pop() 0 MultiPop(k) 0 Το επιµεριστικό κόστος κάθε λειτουργίας είναι O(1). Θα αποδείξουµε ότι για οποιαδήποτε ακολουθία n λειτουργιών, το συνολικό επιµεριστικό κόστος αποτελεί άνω φράγµα του συνολικού πραγµατικού κόστους. q Υποθέτουµε ότι κάθε µονάδα κόστους αναπαρίσταται από 1 ευρώ. q Κάθε φορά που πραγµατοποιείται µια Push(), το 1 εκ των 2 ευρώ χρησιµοποιείται για το κόστος της Push(), ενώ το άλλο αποθηκεύεται στο νέο στοιχείο που εισάγεται στη δοµή. q Το έξτρα ευρώ που είναι αποθηκευµένο σε κάθε στοιχείο της δοµής θα χρησιµοποιηθεί για την «πληρωµή» της Pop() του στοιχείου από τη δοµή (είτε αυτή καλείται άµεσα από τον χρήστη είτε έµµεσα µέσω µιας MultiPop()). ΗΥ240 - Παναγιώτα Φατούρου 34 17
18 Αναφορές Το υλικό της ενότητας αυτής περιέχεται στα ακόλουθα βιβλία: Harry Lewis and Larry Denenberg, Data Structures and Their Algorithms, Harper Collins Publishers, Inc., New York, 1991 Chapter 3: Lists Cormen, Leiserson, Rivest & Stein, Εισαγωγή στους Αλγορίθµους, Πανεπιστηµιακές Εκδόσεις Κρήτης, Κεφάλαιο 17: Αντισταθµιστική Ανάλυση ΗΥ240 - Παναγιώτα Φατούρου 35 18
Ενότητα 2 Στοίβες Ουρές - Λίστες
Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 2 Λίστες
Διαβάστε περισσότεραΕνότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1
Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.
Διαβάστε περισσότεραΣτοίβες Ουρές - Λίστες
Ενότητα 3 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.
Διαβάστε περισσότεραIsEmptyList(L): επιστρέφει true αν L = < >, false
ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ Ορισµός Γραµµικές Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 κόµβους L 0, L 1,..., L n-1, όπου το στοιχείο L 0 είναι το πρώτο στοιχείο (ή ο πρώτος κόµβος),
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ
ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ 1 Αφηρηµ. τύπος δεδοµένων Γραµµική Λίστα Γραµµική λίστα (linear list) ένα σύνολο από n 0 στοιχεία L 0, L 1,..., L n-1 : L 0 είναι το 1ο στοιχείο, 0 < k < n-1 : το στοιχείο L
Διαβάστε περισσότεραΒασικές Δομές Δεδομένων
Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση
Διαβάστε περισσότεραΒασικές οµές εδοµένων
Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση
Διαβάστε περισσότεραΔιάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) -Οι ΑΤΔ Στοίβα και Ουρά -Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική
Διαβάστε περισσότεραΥλοποίηση Λειτουργιών Στοίβας Απλά(1/2)
Υλοποίηση Λειτουργιών Στοίβας Απλά(1/2) void MakeEmptyStack(void) Length = 0; for (i=0; i < N; i++) Infos[i] = ; /* initialize */ int IsEmptyStack(void) if (Length == 0) return 1; return 0; info Top(void)
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα
Διαβάστε περισσότεραΕνότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις
Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές
Διαβάστε περισσότεραΕνότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις
Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι μια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε μια στοίβα και να καλέσετε τις 5 βασικές
Διαβάστε περισσότεραιαφάνειες παρουσίασης #11
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ
ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) q Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U (universe) αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών σύνολα
Διαβάστε περισσότεραΕνότητα 7 Ουρές Προτεραιότητας
Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type).
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 2 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια
Διαβάστε περισσότεραΕνότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)
Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΥλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Υλοποίηση Λιστών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμές Απλά και Διπλά Συνδεδεμένες Λίστες Κυκλικές Απλά και Διπλά Συνδεδεμένες Λίστες Τεχνικές Μείωσης Μνήμης ΕΠΛ 231 Δομές
Διαβάστε περισσότεραInitialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to
Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε
Διαβάστε περισσότεραΟι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διαβάστε περισσότεραΔιάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.
Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()
Διαβάστε περισσότεραΔομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες
Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραΑπλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Διαβάστε περισσότεραΚατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως μια ακολουθία από στοιχεία τύπου window συνοδευόμενη από τις πράξεις: MakeNewWindow(L,w) Destroy(L,w) SwitchTo(L,w)
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα
Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραInsert(K,I,S) Delete(K,S)
ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Γραμμικές Λίστες Βασικές Έννοιες Βασικές Έννοιες. Αναπαράσταση με τύπο και με δείκτη. Γραμμικές Λίστες. Βασικές Λειτουργίες. Δομές Δεδομένων: Βασικές Έννοιες Αντικείμενο
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ
Διαβάστε περισσότεραΤηλ , Fax: , URL:
Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Παναγιώτα Φατούρου faturu@cs.uoi.gr Tµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Τ.Θ. 1186, Γραφείο Α26, Τηλ. +30 26510 98808, Fax: +30 26510 98890,
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΕνότητα 7 Ουρές Προτεραιότητας
Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ
ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες
Διαβάστε περισσότεραΤηλ , Fax: , URL:
Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Παναγιώτα Φατούρου faturu@cs.uoi.gr Τµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Τ.Θ. 1186, Γραφείο Α26, Τηλ. +30 26510 98808, Fax: +30 26510 98890,
Διαβάστε περισσότερα2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ
ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα Δένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: q Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n),
Διαβάστε περισσότεραΔομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή
Διαβάστε περισσότεραΣτοίβες με Δυναμική Δέσμευση Μνήμης
ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές
Διαβάστε περισσότεραΚατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ξεκινούμε με τον αριθμό μας, n, και αρχίζουμε να τον διαιρούμε με ακέραιους ξεκινώντας με το 2 και προχωρώντας στο 3, 4, 5,. Όταν εντοπίσουμε πως ένας αριθμός
Διαβάστε περισσότεραΔομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση
Διαβάστε περισσότεραΟι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες
Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα
Διαβάστε περισσότεραΔιάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΙσορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y
Διαβάστε περισσότεραυναµικές οµές εδοµένων
υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα
Διαβάστε περισσότεραΟι δομές δεδομένων στοίβα και ουρά
Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΘεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }
Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:
Διαβάστε περισσότεραΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 10η: Γράφοι Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 10η: Γράφοι Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 10 Γράφοι ΗΥ240 - Παναγιώτα Φατούρου 2 Γράφοι (ή Γραφήματα) Ένας γράφος
Διαβάστε περισσότεραΔιάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου
Διαβάστε περισσότεραΑνάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι
Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis
Διαβάστε περισσότεραΤηλ , Fax: , URL:
Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Παναγιώτα Φατούρου faturu@cs.uoi.gr Τµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Τ.Θ. 1186, Γραφείο Α26, Τηλ. +30 26510 98808, Fax: +30 26510 98890,
Διαβάστε περισσότεραΤαξινομώντας τον πίνακα σε φθίνουσα σειρά ως προς τις πωλήσεις, μπορούμε να δούμε ποιοι ήταν οι καλύτεροι πωλητές. Ζωή Μάνος Δημήτρης Κατερίνα Γιάννα Πωλήσεις Μαρτίου Πωλητής Πωλήσεις (χιλιάδες κουτιά)
Διαβάστε περισσότεραΚατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Υπάρχουν διάφοροι τρόποι για να υλοποιήσουμε πράξεις ουράς για την προτεινόμενη εγγραφή. To πρόβλημα που δημιουργείται με οποιαδήποτε από αυτές είναι ότι είναι
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως
Διαβάστε περισσότεραΔιάλεξη 21η: Απλά Συνδεδεμένες Λίστες
Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:
Διαβάστε περισσότεραΦροντιστήριο 4 Σκελετοί Λύσεων
Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΤηλ , Fax: , URL:
Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Παναγιώτα Φατούρου faturu@cs.uoi.gr Τµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Τ.Θ. 1186, Γραφείο Α26, Τηλ. +30 26510 98808, Fax: +30 26510 98890,
Διαβάστε περισσότεραΕργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΔιάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο
Διαβάστε περισσότεραΣύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης
Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές
Διαβάστε περισσότεραΕρωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή
Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 3 1. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή 2. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης 3. Ένας πίνακας
Διαβάστε περισσότεραΦροντιστήριο 4 Σκελετοί Λύσεων
Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];
Διαβάστε περισσότεραΕνότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)
Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές
Διαβάστε περισσότεραOι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:
3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται
Διαβάστε περισσότεραΚεφάλαιο 10 Ψηφιακά Λεξικά
Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Προγραμματισμός Η/Υ 4 η ενότητα: Δομές Δεδομένων Τμήμα Τεχνολόγων Περιβάλλοντος ΤΕΙ Ιονίων Νήσων Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative
Διαβάστε περισσότεραΔιάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 10-1 Περιεχόμενο Διάλεξης
Διαβάστε περισσότεραιαφάνειες παρουσίασης #5 (β)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότερα