Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:"

Transcript

1 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται και σαν µία λίστα τύπου LIFO (Last-In-First-Out), για να δηλώνεται έτσι ρητά η βασική της ιδιότητα, ότι το στοιχείο που θα προστεθεί τελευταίο στη στοιβάδα θα αφαιρεθεί πρώτο ή ισοδύναµα το πρώτο στοιχείο που θα προστεθεί στη στοιβάδα, αναγκαστικά πρέπει να αφαιρεθεί τελευταίο. Bασικές πράξεις σε στοίβες: Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 1) Δηµιουργία Στοίβας: Mε την πράξη αυτή δηµιουργείται µία κενή στοίβα S, η οποία δεν περιέχει κανένα στοιχείο. 2) Eισαγωγή στοιχείου σε Στοίβα - push(p): Δοθείσης µίας στοίβας S, το στοιχείο P τοποθετείται στην κορυφή της στοίβας S, σαν τελευταίο στοιχείο. 3) Eξαγωγή στοιχείου από Στοίβα - pop( ): Tο στοιχείο P που βρίσκεται στην κορυφή της στοίβας S αφαιρείται από αυτήν και επιστρέφεται. 23

2 4) Eλεγχος κενής στοιβάδας - isempty( ): Δοθείσης µίας στοίβας S, επιστρέφει την τιµή true, εάν η στοίβα S δεν έχει κανένα στοιχείο, ενώ στην αντίθετη περίπτωση την τιµή false. Επιπλέον των πράξεων αυτών που θεωρούνται βασικές συνήθως ορίζονται και οι πράξεις: 5) Κορυφή της στοίβας - top( ): Tο στοιχείο P που βρίσκεται στην κορυφή της στοίβας S επιστρέφεται, χωρίς όµως να αφαιρεθεί από αυτήν. 6) Μέγεθος της στοίβας - size( ): Δοθείσης µίας στοίβας S επιστρέφει το πλήθος των στοιχείων της (ενεργό µήκος της στοίβας). Η παρακάτω διασύνδεση (interface) ορίζει τον αφηρηµένο τύπο δεδοµένων (abstract data type) στοίβα: public interface Stack public int size(); // επιστρέφει το µέγεθος της στοίβας public boolean isempty(); // αληθεύει εάν η στοίβα είναι κενή public Object top( ) throws StackEmptyException; // επιστρέφει το στοιχείο που βρίσκεται στην κορυφή της στοίβας public void push(object item) throws StackFullException; // εισάγει ένα νέο στοιχείο στην κορυφή της στοίβας public Object pop( ) throws StackEmptyException; // εξάγει και επιστρέφει το στοιχείο που βρίσκεται στην κορυφή της στοίβας Τµήµα Κώδικα 1 24

3 3.1.1 Yλοποίηση Στοίβας µε τη Bοήθεια Πίνακα Mία στοίβα µπορεί να αναπαρασταθεί µε τη βοήθεια ενός πίνακα (συγκεκριµένου µήκους) και ενός ακεραίου "ενδείκτη" ο οποίος δείχνει το στοιχείο του πίνακα που αποτελεί την κορυφή της στοίβας. S 0 N-1 top O πίνακας αυτός µαζί µε τον ενδείκτη µπορούν να οµαδοποιηθούν µε τη βοήθεια δηλώσεων της κλάσης ArrayStack, που υλοποιεί τον αφηρηµένο τύπο Stack, όπως φαίνεται παρακάτω: public class ArrayStack implements Stack public static final int CAPACITY = 1000; private int capacity; private Object[ ] S; private int top = -1;. 1) Δηµιουργία Στοίβας: Η κενή στοίβα που δηµιουργείται µπορεί να παρασταθεί µε έναν άδειο πίνακα και την αρχική τιµή του ενδείκτη top = N-1 S top 25

4 Το µέγεθος της στοίβας µπορεί να καθορίζεται είτε έµµεσα π.χ 1000 στοιχεία είτε άµεσα κατά τη δηµιουργία της στοίβας. Οι δοµητές της κλάσης ArrayStack για τις δύο αυτές περιπτώσεις είναι οι εξής: public ArrayStack( ) this(capacity); public ArrayStack(int cap) capacity = cap; S = new Object[capacity]; 2) Eισαγωγή στοιχείου στη Στοίβα: Η διαδικασία εισαγωγής ενός στοιχείου στη στοίβα συνίσταται στην αύξηση του ενδείκτη top κατά ένα και την τοποθέτηση του στοιχείου στη θέση του πίνακα που δείχνει ο top. Στην περίπτωση που ο χώρος της στοίβας έχει εξαντληθεί από προηγούµενες εισαγωγές στοιχείων, δηµιουργείται κατάσταση εξαίρεσης (υπερχείλιση στοίβας). Η µέθοδος push της ArrayStack είναι η εξής: public void push(object item) if (size( )== capacity) throw new StackFullException("Stack overflow"); S[++top] = item; Η εξαίρεση StackFullException πρέπει να οριστεί µε τη βοήθεια ξεχωριστής κλάσης, η οποία επεκτείνει την κλάση RuntimeException. 3) Eξαγωγή στοιχείου από Στοίβα: Η διαδικασία εξαγωγής ενός στοιχείου από τη στοίβα συνίσταται στην επιστροφή του στοιχείου που βρίσκεται στην κορυφή της στοίβας και τη µείωση του ενδείκτη top κατά ένα. Εάν κατά την πράξη εξαγωγής στοιχείου η στοίβα βρεθεί άδεια δηµιουργείται κατάσταση εξαίρεσης (άδεια στοίβα). 26

5 public Object pop( ) throws StackEmptyException Object element; if (isempty( )) throw new StackEmptyException("Stack is empty"); element = S[top]; S[top--] = null; //!!! Χρειάζεται για τον garbage collector return element; Η εξαίρεση StackEmptyException πρέπει επίσης να οριστεί µε τη βοήθεια ξεχωριστής κλάσης. 4) Eλεγχος κενής στοίβας: Είτε στην περίπτωση που η στοίβα έχει µόλις δηµιουργηθεί είτε στην περίπτωση που η στοίβα δεν έχει κανένα στοιχείο µετά από διαδοχικές εισαγωγές και εξαγωγές στοιχείων ο ενδείκτης top θα πρέπει να έχει την τιµή -1: public boolean isempty( ) return (top < 0); Στο τµήµα κώδικα 2 δίνεται ολόκληρη η υλοποίηση της κλάσης ArrayStack και στο τµήµα κώδικα 3 των κλάσεων που υλοποιούν τις εξαιρέσεις. public class ArrayStack implements Stack public static final int CAPACITY = 1000; private int capacity; private Object[ ] S; private int top = -1; public ArrayStack( ) this(capacity); 27

6 public ArrayStack(int cap) capacity = cap; S = new Object[capacity]; public int size( ) return (top+1); public boolean isempty( ) return (top < 0); public void push(object item) if (size( )== capacity) throw new StackFullException("Stack overflow"); S[++top] = item; public Object top( ) throws StackEmptyException if (isempty( )) throw new StackEmptyException("Stack is empty"); return S[top]; public Object pop() throws StackEmptyException Object element; if (isempty()) throw new StackEmptyException("Stack is empty"); element = S[top]; S[top--] = null; //!!! για τον garbage collector return element; Τµήµα Κώδικα 2 28

7 public class StackEmptyException extends RuntimeException public StackEmptyException(String err) super(err); public class StackFullException extends RuntimeException public StackFullException(String err) super(err); Τµήµα Κώδικα 3 Σαν ένα παράδειγµα χρήσης της στοίβας στο τµήµα κώδικα 4 δίνεται η κλάση ReverseArray η οποία υλοποιεί τη διαδικασία αντιστροφής των στοιχείων ενός πίνακα χρησιµοποιώντας τις βασικές πράξεις της στοίβας. import java.io.*; class ReverseArray public static String[ ] Reverse(String[ ] a) int i; ArrayStack s = new ArrayStack( ); for (i=0; i<a.length; ++i) s.push(a[i]); i=0; while (!s.isempty( )) a[i]=(string)s.pop(); i++; return a; 29

8 public static void main(string[ ] args) throws IOException String b[ ] = "nikos","demos","maria","lina","thomas"; String c[ ] = new String[b.length]; ReverseArray RA = new ReverseArray(); c = RA.Reverse(b); for (int i=0; i<c.length; ++i) System.out.println(c[i]); Τµήµα Κώδικα OYPEΣ Oυρά (queque) είναι µια λίστα στην οποία µπορούν να προστεθούν στοιχεία µόνο στη µία άκρη (πίσω) και να αφαιρεθούν µόνο από την άλλη (µπροστά). Mια ουρά αναφέρεται και σαν λίστα τύπου FIFO (First-In- First-Out). Bασικές πράξεις σε ουρές: Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο ουρά είναι οι εξής: 1) Δηµιουργία Oυράς: Mε την πράξη αυτή δηµιουργείται µία κενή ουρά Q, η οποία δεν περιέχει κανένα στοιχείο. 2) Eισαγωγή στοιχείου σε Oυρά - enqueue(p): Δοθείσης µίας ουράς Q, το στοιχείο P τοποθετείται στο πίσω µέρος της σαν τελευταίο στοιχείο. 3) Eξαγωγή στοιχείου από Oυρά - dequeue(p): Δοθείσης µίας ουράς Q, το στοιχείο P που βρίσκεται στην αρχή της αφαιρείται από αυτήν και επιστρέφεται. 4) Eλεγχος κενής Oυράς - isempty( ): Eπιστρέφει την τιµή true, εάν η ουρά Q είναι κενή, ενώ στην αντίθετη περίπτωση την τιµή false. Επιπλέον των πράξεων αυτών που θεωρούνται βασικές συνήθως ορίζεται και η πράξη: 30

9 5) Μέγεθος της ουράς - size( ): Δοθείσης µίας ουράς Q επιστρέφει το πλήθος των στοιχείων της (ενεργό µήκος της ουράς). 6) Πρώτο στοιχείο της ουράς - front( ): Δοθείσης µίας ουράς Q επιστρέφει το πρώτο στοιχείο της ουράς, χωρίς όµως να το αφαιρεί από αυτήν. Η παρακάτω διασύνδεση (interface) ορίζει τον αφηρηµένο τύπο δεδοµένων (abstract data type) ουρά (τµήµα κώδικα 5). Στο τµήµα κώδικα 6 δίνονται οι κλάσεις που υλοποιούν τις εξαιρέσεις που σχετίζονται µε την ουρά: public interface Queue public int size( ); // επιστρέφει το µέγεθος (αριθµός στοιχείων) της ουράς public boolean isempty( ); // αληθεύει εάν η ουρά είναι κενή public Object front( ) throws QueueEmptyException; // επιστρέφει το στοιχείο που βρίσκεται στo εµπρός µέρος της ουράς public void enqueue(object item); // εισάγει ένα νέο στοιχείο στο πίσω µέρος της ουράς public Object dequeue( ) throws QueueEmptyException; // εξάγει και επιστρέφει το στοιχείο που βρίσκεται // στo εµπρός µέρος της ουράς Τµήµα κώδικα 5 public class QueueEmptyException extends RuntimeException public QueuekEmptyException(String err) super(err); 31

10 public class QueueFullException extends RuntimeException public QueueFullException(String err) super(err); Τµήµα Κώδικα Yλοποίηση Oυράς µε τη Bοήθεια Πίνακα Mια ουρά µπορεί να αναπαρασταθεί µε τη βοήθεια ενός πίνακα και δύο ακεραίων ενδεικτών από τους οποίους ο ένας δείχνει το στοιχείο του πίνακα που αποτελεί το τελευταίο στοιχείο της ουράς και ο άλλος το στοιχείο του πίνακα που αποτελεί το πρώτο στοιχείο της. Q 0 N-1 first last O πίνακας αυτός µαζί µε τους δύο ενδείκτες µπορούν να οµαδοποιηθούν µε τη βοήθεια δηλώσεων της κλάσης ArrayQueue, που υλοποιεί τον αφηρηµένο τύπο Queue, όπως φαίνεται παρακάτω: public class ArrayQueue implements Queue public static final int CAPACITY = 1000; private int capacity; private Object[ ] Q; private int first = 0; private int last = 0;.. 32

11 1) Δηµιουργία Oυράς: Το µέγεθος της ουράς µπορεί να καθορίζεται είτε έµµεσα π.χ 1000 στοιχεία είτε άµεσα κατά τη δηµιουργία της. Οι δοµητές της κλάσης ArrayQueue για τις δύο αυτές περιπτώσεις είναι οι εξής: public ArrayQueue() this(capacity); public ArrayQueue(int cap) capacity = cap; Q = new Object[capacity]; Κατά την αρχική δηµιουργία της ουράς οι τιµές των ενδεικτών first και last είναι 0. Q 0 N-1 first last 2) Εισαγωγή Στοιχείου στην Ουρά: Η διαδικασία εισαγωγής ενός στοιχείου στην ουρά συνίσταται στην τοποθέτηση του στοιχείου στη θέση του πίνακα που δείχνει ο ενδέικτης last και στη συνέχεια την αύξηση του ενδείκτη κατά ένα. Στην περίπτωση που ο χώρος της ουράς έχει εξαντληθεί από προηγούµενες εισαγωγές στοιχείων, δηµιουργείται κατάσταση εξαίρεσης (υπερχείλιση ουράς). Η µέθοδος enqueue της ArrayQueue είναι η εξής: public void enqueue(object item) if (last == capacity) throw new QueueFullException("Queue overflow"); Q[last++] = item; 33

12 Η εξαίρεση QueueFullException έχει οριστεί µε τη βοήθεια ξεχωριστής κλάσης, η οποία επεκτείνει την κλάση RuntimeException. Πρέπει να σηµειωθεί ότι κατά κανόνα η κατάσταση της υπερχείλισης της ουράς είναι εικονική, µε την έννοια ότι ο πίνακας διαθέτει άδεια στοιχεία, τα οποία µε βάση τη συγκεκριµένη υλοποίηση της enqueue δεν µπορούν να χρησιµοποιηθούν. Υπάρχουν διάφοροι τρόποι αντιµετώπισης της εικονικής υπερχείλισης της ουράς, ένας από τους οποίους δίνεται στην παράγραφο ) Εξαγωγή Στοιχείου από την Ουρά: Η διαδικασία εξαγωγής ενός στοιχείου από την ουρά συνίσταται στην επιστροφή του στοιχείου που βρίσκεται στη θέση first του πίνακα και στη συνέχεια την αύξηση του ενδείκτη κατά ένα. Στην περίπτωση που η ουρά είναι άδεια, δηµιουργείται κατάσταση εξαίρεσης (άδεια ουρά). Η µέθοδος dequeue της ArrayQueue είναι η εξής: public Object dequeue( ) throws QueueEmptyException Object item; if (isempty( )) throw new QueueEmptyException("Queue is empty"); item = Q[first]; Q[first++] = null; //!!! για τον garbage collector return item; Η εξαίρεση QueueEmptyException έχει επίσης οριστεί µε τη βοήθεια ξεχωριστής κλάσης. 4) Ελεγχος κενής ουράς: Είτε στην περίπτωση που η ουρά έχει µόλις δηµιουργηθεί είτε στην περίπτωση που η ουρά δεν έχει κανένα στοιχείο µετά από διαδοχικές εισαγωγές και εξαγωγές στοιχείων οι ενδείκτες first και last θα πρέπει να έχουν την ίδια τιµή: public boolean isempty( ) return (first==last); Στο τµήµα κώδικα 7 δίνεται ολόκληρη η υλοποίηση της κλάσης ArrayQueue. 34

13 public class ArrayQueue implements Queue public static final int CAPACITY = 1000; private int capacity; private Object[ ] Q; private int first = 0; private int last = 0; public ArrayQueue() this(capacity); public ArrayQueue(int cap) capacity = cap; Q = new Object[capacity]; public int size( ) return (last-first); public boolean isempty( ) return (first==last); public void enqueue(object item) if (last == capacity) throw new QueueFullException("Queue overflow"); Q[last++] = item; public Object front( ) throws QueueEmptyException if (isempty( )) throw new QueueEmptyException("Queue is empty"); return Q[first]; 35

14 public Object dequeue( ) throws QueueEmptyException Object item; if (isempty( )) throw new QueueEmptyException("Queue is empty"); item = Q[first]; Q[first++] = null; //!!! για τον garbage collector return item; Τµήµα Κώδικα 7 Σαν παράδειγµα χρήσης της ουράς στο τµήµα κώδικα 8 φαίνεται η χρήση µιάς ουράς για τη δηµιουργία αντιγράφου ενός πίνακα. import java.io.*; public class QueueTest public static String[ ] QCopy(String[ ] a) int i; ArrayQueue q = new ArrayQueue(); for (i=0; i<a.length; ++i) q.enqueue(a[i]); i=0; while (!q.isempty( )) a[i]=(string)q.dequeue( ); i++; return a; public static void main(string[ ] args) throws IOException String[ ] b = "nikos","demos","maria","lina","thomas"; String[ ] c = new String[b.length]; QueueTest QA = new QueueTest(); c = QA.QCopy(b); for (int i=0; i<c.length; ++i) System.out.println(c[i]); Τµήµα Κώδικα 8 36

15 3.2.2 Κυκλική Ουρά Όπως αναφέρθηκε στην παράγραφο η υλοποίηση της ουράς µε τη βοήθεια ενός πίνακα µπορεί να οδηγήσει στο φαινόµενο της εικονικής υπερχείλισης. Ας θεωρήσουµε για παράδειγµα ότι έχουµε εισάγει και στη συνέχεια εξάγει ένα στοιχείο Ν-1φορές στην ουρά. Στην περίπτωση αυτή οι ενδείκτες first και last θα έχουν την τιµή Ν και η επόµενη προσπάθεια εισαγωγής στοιχείου στην ουρά θα οδηγηθεί σε αποτυχία, παρά το γεγονός ότι ο πίνακας που φιλοξενεί τα στοιχεία είναι εντελώς άδειος! Λύση στο πρόβληµα αυτό αποτελεί η κυκλική ουρά. Στην περίπτωση αυτή θεωρούµε ότι το επόµενο στοιχείο του Q[N-1] στον πίνακα είναι το Q[0] εφόσον αυτό είναι κενό. Για να γίνει δυνατή η υλοποίηση της κυκλικής ουράς πρέπει στις πράξεις εισαγωγής και εξαγωγής στοιχείου να τροποποιήσουµε την αύξηση των ενδεικτών µε (first+1)modulon και (last+1)modulon αντίστοιχα, όπου ο τελεστής modulo αντιστοιχεί στο υπόλοιπο της ακεραίας διαίρεσης (στη Java χρησιµοποιείται ο τελεστής %). Μία εικόνα της κυκλικής ουράς µετά από έναν αριθµό πράξεων εισαγωγής - εξαγωγής φαίνεται στο παρακάτω σχήµα: Q 0 N-1 last first Στο τµήµα κώδικα 9 δίνεται η κλάση SArrayQueue που υλοποιεί τον τύπο Queue σαν µία κυκλική ουρά. 37

16 public class SArrayQueue implements Queue // Υλοποίηση κυκλικής ουράς public static final int CAPACITY = 1000; private int capacity; private Object[ ] Q; private int first = 0; private int last = 0; public SArrayQueue( ) this(capacity); public SArrayQueue(int cap) capacity = cap; Q = new Object[capacity]; public int size( ) return (capacity-first+last)%capacity; public boolean isempty( ) return (first==last); public void enqueue(object item) if (size( ) == capacity) throw new QueueFullException("Queue overflow"); Q[last] = item; last = (last+1)%capacity; public Object front( ) throws QueueEmptyException if (isempty()) throw new QueueEmptyException("Queue is empty"); return Q[first]; 38

17 public Object dequeue( ) throws QueueEmptyException Object item; if (isempty( )) throw new QueueEmptyException("Queue is empty"); item = Q[first]; Q[first] = null; //!!! για τον garbage collector first=(first+1)%capacity; return item; Τµήµα Κώδικα 9 39

18 3.3 ΑΣΚΗΣΕΙΣ 1. Δώστε το περιεχόµενο της στοίβας (stack) µετά την εκτέλεση της παρακάτω σειράς από πράξεις: Π Α Ρ * Α * * Π Ο Λ * * * Υ Ε * * * Υ * Κ Ο * Λ Ο * Στην περίπτωση αυτή ένα γράµµα ερµηνεύεται σαν πράξη εισαγωγής (του γράµµατος) στη στοίβα, ενώ ο χαρακτήρας * ερµηνεύεται σαν πράξη εξαγωγής (ενός γράµµατος) από τη στοίβα. 2. Αν η εκτέλεση της σειράς των πράξεων της άσκησης 1 γινόταν σε µία ουρά (queue), ποιό θα ήταν το τελικό της περιεχόµενο; 3. Υλοποιήστε τη δοµή δεδοµένων στοίβα (stack) µε τη χρήση της κλάσης Vector της Java. 4. Μία αριθµητική παράσταση περιέχει παρενθέσεις. Να γραφεί ένα πρόγραµµα το οποίο να ελέγχει εάν οι παρενθέσεις αυτές έχουν χρησιµοποιηθεί σωστά. Να χρησιµοποιηθεί η δοµή δεδοµένων στοίβα. 5. Περιγράψτε πως είναι δυνατή η υλοποίηση µίας στοίβας µε τη βοήθεια δύο ουρών. 6. Υλοποιήστε τη δοµή δεδοµένων ουρά (queue) µε τη χρήση της κλάσης Vector της Java. 7. Περιγράψτε πως είναι δυνατή η υλοποίηση µίας ουράς µε τη βοήθεια δύο στοιβών. 8. Στην περίπτωση της κυκλικής ουράς που παρουσιάστηκε στην παράγραφο θεωρήστε ότι έχουµε εισάγει Ν στοιχεία, χωρίς να έχουµε εξάγει κανένα. Θα έχουµε τότε first = last όπως ακριβώς και στην περίπτωση που η ουρά είναι άδεια. Πως µπορούµε να αντιµετωπίσουµε αυτό το πρόβληµα; 40

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ µε JAVA

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ µε JAVA Tµήµα ΠΛΗΡΟΦΟΡΙΚΗΣ Σχολή Τεχνολογικών Εφαρµογών A-Τ.Ε.Ι. Θεσσαλονίκης Σηµειώσεις Διαλέξεων ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ µε JAVA ΗΜΟΣΘΕΝΗΣ Ι. ΣΤΑΜΑΤΗΣ Θεσσαλονίκη 2006 Εισαγωγή 1 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας

Διαβάστε περισσότερα

Ευφυείς Τεχνολογίες ----Πράκτορες

Ευφυείς Τεχνολογίες ----Πράκτορες Ευφυείς Τεχνολογίες ----Πράκτορες Ενότητα 6: Προγραμματισμός Βασισμένος στους πράκτορες Το Περιβάλλον Ανάπτυξης Πολλαπλών Πρακτόρων JADE Δημοσθένης Σταμάτης demos@it.teithe.gr www.it.teithe.gr/~demos Μαθησιακοί

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

Διαβάστε περισσότερα

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

public class ArrayStack implements Stack {

public class ArrayStack implements Stack { public class ArrayStack implements Stack { private static final int DEF_STACK_SIZE=2; //Array of objects private Object[] S; private int index ; // index, top, last, position // Returns the last item of

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN 4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN Yπάρχει ένας αριθµός προγραµµατιστικών προβληµάτων, τα οποία είναι δύσκολο να επιλυθούν µε τη βοήθεια των στατικών δοµών δεδοµένων που αναφέραµε µέχρι τώρα. Aυτό γιατί οι δοµές

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

public class ArrayQueue implements Queue {

public class ArrayQueue implements Queue { public class ArrayQueue implements Queue { // ΠΡΟΣΟΧΗ 2 δείκτες τώρα: // Ο ένας (index/last),ίδιος με πριν, δείχνει την θέση του νέου στοιχείου. // Ο άλλος (front) ΠΑΝΤΑ δείχνει την θέση του 1ου στοιχείου

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές

Διαβάστε περισσότερα

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Linear Data Structures) Ας θεωρήσουµε µία δοµή δεδοµένων το σύνολο των στοιχείων της οποίας είναι διατεταγµένο µε τέτοιο τρόπο ώστε να ισχύουν τα εξής: (α) υπάρχει ένα µόνο

Διαβάστε περισσότερα

Βασικές Δομές Δεδομένων

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1). Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).

Διαβάστε περισσότερα

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

Διαβάστε περισσότερα

Βασικές οµές εδοµένων

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα

Διαβάστε περισσότερα

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ ) Περιγραφή και Υλικό Ανάγνωσης Στοίβες ΟΑφηρηµένος Τύπος εδοµένων της Στοίβας (tack Abstract Data Type (ADT)) (..) Εφαρµογές για Στοίβες (..) Υλοποίηση µε βάση πίνακες (..) Στοίβα βασισµένη σε πίνακα η

Διαβάστε περισσότερα

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

Διαβάστε περισσότερα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #11

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Να γίνει περιγραφή της δομής δεδομένων Στοίβα. Στη δομή δεδομένων στοίβα τα δεδομένα στοιβάζονται το ένα πάνω στο άλλο. Σχηματικά οι λεπτομέρειες μιας δομής δεδομένων στοίβας μπορούν

Διαβάστε περισσότερα

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Σωρός Μεγίστου ως ΑΤΔ Ένας σωρός μεγίστου (max heap) είναι ένας ΑΤΔ που

Διαβάστε περισσότερα

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας Ουρές Προτεραιότητας Ουρά Προτεραιότητας (Priority Queue) Μια συλλογή αντικειμένων που χαρακτηρίζονται από μια συγκρίσιμη προτεραιότητα. Έχει την λογική εικόνα μιας δομής δεδομένων όπου, αντικείμενα εισέρχονται

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 6 Στοίβα (Stack) Stack Introduction Stack is one of the

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι. Στοίβες. Εργαστήριο Γνώσης & Ευφυούς Πληροφορικής 1

Δομές Δεδομένων & Αλγόριθμοι. Στοίβες. Εργαστήριο Γνώσης & Ευφυούς Πληροφορικής 1 Στοίβες Πληροφορικής 1 Περίληψη Ο Αφηρημένος Τύπος Δεδομένων (ΑΔΤ) : στοίβα Εφαρμογές στοίβας Υλοποίηση βασισμένη σε πίνακα Αυξανόμενη Στοίβα βασισμένη σε πίνακα Infix to Postfix Πληροφορικής 2 Αφηρημένος

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Αντικείμενα μέσα σε αντικείμενα Ορίζουμε κλάσεις για να ορίσουμε τύπους δεδομένων τους οποίους χρειαζόμαστε Π.χ., ο τύπος δεδομένων Date

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

Συνδεδεμένη Λίστα ΣΛ null VK 23

Συνδεδεμένη Λίστα ΣΛ null VK 23 Απλά (και διπλά) συνδεδεµένες Συνδεδεμένη Λίστα ΣΛ Μια αλυσίδα κόµβων όπου κάθε κόµβος δείχνει στον επόµενό του 12 99 37 18 null O κάθε κόµβος έχει 2 τµήµατα: data: τα δεδοµένα (ή µια αναφορά προς αυτά)

Διαβάστε περισσότερα

Οι δομές δεδομένων στοίβα και ουρά

Οι δομές δεδομένων στοίβα και ουρά Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης

Διαβάστε περισσότερα

Σι θα δούμε σε αυτό το μάθημα;

Σι θα δούμε σε αυτό το μάθημα; Σι θα δούμε σε αυτό το μάθημα; Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ πηλάθσλ (arrays) Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ ζπιινγώλ (collections) Σι είναι ένας πίνακας (array) Έλαο πίλαθαο είλαη

Διαβάστε περισσότερα

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Γραµµικές Δοµές Δεδοµένων (Linear Data Structures) Πίνακες (Arrays) Διανύσµατα (Vectors) http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

υναµικές οµές εδοµένων

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

Διαβάστε περισσότερα

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Παράδειγμα κληρονομικότητας Έχουμε ένα σύστημα διαχείρισης εισιτηρίων μιας συναυλίας. Το κάθε εισιτήριο έχει

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Προγραμματισμός Η/Υ 4 η ενότητα: Δομές Δεδομένων Τμήμα Τεχνολόγων Περιβάλλοντος ΤΕΙ Ιονίων Νήσων Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων class Person { private String name; public Person(String name){ this.name = name; public String getname(){ return name; class Car { private

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Από το προηγούμενο lab Είχαμε την κλάση Document, και δύο παραγόμενες κλάσεις: TextFile, Email Document

Διαβάστε περισσότερα

POINTERS, AGGREGATION, COMPOSITION

POINTERS, AGGREGATION, COMPOSITION POINTERS, AGGREGATION, COMPOSITION POINTERS TO OBJECTS Η κλάση mystring class mystring private: char *s; int size; public: mystring(const char *); ~mystring(); char *GetString(); int GetSize(); ; mystring::mystring(const

Διαβάστε περισσότερα

Μάθημα 21: Ουρές (Queues)

Μάθημα 21: Ουρές (Queues) Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα εδοµένα Αλγόριθµοι + οµές εδοµένων = Προγράµµατα Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση Κεφάλαιο 3 : οµές εδοµένων και Αλγόριθµοι Στοίβα Στη δοµή δεδοµένων στοίβα τα δεδοµένα στοιβάζονται το ένα πάνω

Διαβάστε περισσότερα

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 18 Οκτωβρίου 2006 Η εργασία είχε σαν στόχο να δημιουργηθεί ένα κατανεμημένο σύστημα ελέγχου συσκευών μιας κουζίνας.συγκεκριμένα

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο

Διαβάστε περισσότερα

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παραδείγματα Τι γίνεται αν έχουμε ένα constructor που παίρνει όρισμα ένα πίνακα? public Car(int[] position) Αν ο πίνακας αλλάξει μέσα στην

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων class Person { private String name; public Person(String name){ this.name = name; public String getname(){ return name; class Car { private

Διαβάστε περισσότερα

Δομές Δεδομένων Ενότητα 4

Δομές Δεδομένων Ενότητα 4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 0: ΛίστεςΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες Λίστες - Τεχνικές Μείωσης Χώρου Διδάσκων:

Διαβάστε περισσότερα

Διορθώσεις σελ

Διορθώσεις σελ Διορθώσεις σελ. 73-74 # Τώρα ο άνθρωπος σκέφτεται έναν αριθμό από 1 έως 1000 Ν = 1000 print Σκέψου έναν αριθμό από το 1 έως το, Ν guesses = 0 found = False first = 1 last = N while not found and guesses

Διαβάστε περισσότερα

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας Τελική Εξέταση (3 ώρες) Ημερομηνία: 25 Ιανουαρίου 2008 ύνολο μονάδων: 120 (δηλαδή

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι γνωρίζετε για τη στοίβα και τι για την ουρά; (Μονάδες 7) Στοίβα (Stack) είναι μια δομή στην οποία

Διαβάστε περισσότερα

Το ισχυρό πλεονέκτηµα των απλών µη ταξινοµηµένων πινάκων που είναι η γρήγορη εισαγωγή, αναιρείται αν απαγορεύονται τα διπλότυπα.

Το ισχυρό πλεονέκτηµα των απλών µη ταξινοµηµένων πινάκων που είναι η γρήγορη εισαγωγή, αναιρείται αν απαγορεύονται τα διπλότυπα. Πίνακες Η πιο βασική δοµή αποθήκευσης δεδοµένων Υποστηρίζεται από όλες τις γλώσσες προγραµµατισµού Συνεχόµενες θέσεις στην κύρια µνήµη Προσπέλαση µέσω δείκτη Στατική δοµή το µέγεθος ορίζεται εξαρχής και

Διαβάστε περισσότερα

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract

Διαβάστε περισσότερα

Βασικά της γλώσσας JAVA

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος 2010/2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου A. Πρωταρχικοί τύποι B. Είσοδος/ Έξοδος C. Πράξεις 2 Δήλωση / Αρχικοποίηση / Εκχώρηση A. Πρωταρχικοί

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 7 Ουρά (Queue) Queue Μάθημα: Δομές Δεδομένων & Αλγόριθμοι

Διαβάστε περισσότερα

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) -Οι ΑΤΔ Στοίβα και Ουρά -Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

Διαβάστε περισσότερα

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα