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

Σχετικά έγγραφα
2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Week. 6: Java Collections

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

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

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

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

Συνδεδεμένη Λίστα (Linked List)

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

Week 7: Java Collection Classes

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

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

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

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

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

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Standard Template Library (STL) C++ library

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

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

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

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

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

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

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

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

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

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

είκτες και Πίνακες (2)

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Στοίβες Ουρές - Λίστες

public class ArrayStack implements Stack {

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Δομές Δεδομένων

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

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

Διαδικασιακός Προγραμματισμός

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

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

ιαφάνειες παρουσίασης #5 (β)

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

Εισαγωγή στην πληροφορική

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

Επανάληψη για τις Τελικές εξετάσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

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

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

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

Προγραμματισμός Διαδικτύου

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

Transcript:

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

ΠΙΝΑΚΕΣ (ARRAYS) Οι πίνακες στη Java θεωρούνται αντικείµενα και εποµένως οι µεταβλητές τύπου πίνακα συµπεριφέρονται σαν µεταβλητές τύπου κλάσης είναι δηλαδή αναφορές (references) σε αντικείµενα. Αν και δεν υπάρχει κλάση µε την ονοµασία array αυτή υλοποιείται εσωτερικά από τη Java για λόγους αποτελεσµατικότητας. Το µέγεθος του πίνακα καθορίζεται µε τη δηµιουργία του και δεν µπορεί να αλλάζει κατά τη διάρκεια της εκτέλεσης του προγράµµατος (στατικό µέγεθος): Αν Α πίνακας : int i = Α.length; Α.length =100; // Προσοχή, λάθος! Δήλωση Πίνακα int[ ] pin; ή ισοδύναµα int pin[ ]; Ανάθεση µνήµης για τα στοιχεία του Πίνακα pin = new int[10]; int j = 5; int max = 10 *j; int [ ] pin = new int[max]; Δήλωση & Ανάθεση µαζί int[ ] pin = new int[10]; 2

Αρχικοποίηση Πίνακα int[ ] pin = {2,4,6,8,10,12,14,16,18,20}; Αρχικοποίηση µεταβλητής Πίνακα char[ ] data = null; Ενδείκτες Πίνακα a = 3; b = 5; pin[a+b] += 2; H Java πραγµατοποιεί έλεγχο εύρους (range checking) στους ενδείκτες (subscripts) των πινάκωςν ΠΙΝΑΚΕΣ (ARRAYS) Τα στοιχεία ενός πίνακα µπορεί να είναι οποιοδήποτε τύπου, είτε πρωταρχικού (π.χ. int, char κλπ) είτε τύπου κλάσης (π.χ. student). Στη δεύτερη περίπτωση αντιµετωπίζουµε κάθε στοιχείο του πίνακα σα µεταβλητή τύπου κλάσης. Student[ ] table = new Student[60] [0.. 59] table student1 student2.... studentn Ο πίνακας είναι µία απεικόνιση από ένα πεδίο ορισµού (τιµές ενδείκτη) σε ένα πεδίο τιµών (τιµές των στοιχείων) 3

ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Εάν τα στοιχεία ενός πίνακα είναι µε τη σειρά τους τύπου πίνακα, τότε αυτός ονοµάζεται Πολυδιάστατος Παραδείγµατα δισδιάστατων πινάκων: String [ ] [ ] pin2; pin2 = new String [3] [4]; int[ ] [ ] pin3= { {4,5}, {1,7} }; int[ ] [ ] pin4; pin4 = new int[2] [ ]; pin4[0] = new int[3]; //γραµµές διαφορετικού µήκους pin4[1] = new int[5]; Γραµµική Δοµή της οποίας το µέγεθος µεταβάλλεται. Υλοποιείται από την κλάση Vector/java.util Δηµιουργία Διανύσµατος: Vector v1 = new Vector(10,5); Αρχικό µέγεθος 10 θέσεις Όταν χρειαστεί το µέγεθος αυξάνεται κατά 5 Vector v1 = new Vector(4); Αρχικό µέγεθος 4 θέσεις. (Διπλασιάζεται) Vector v1 = new Vector( ); Αρχικό µέγεθος 10 θέσεις. (Διπλασιάζεται) 4

Βασικές Μέθοδοι (1/2) void addelement(object Item ) Προσθέτει το Item στο τέλος του διανύσµατος, αυξάνει το µέγεθός του κατά 1 Void insertelementat(object Item, int pos) Παρεµβάλει το Item σαν νέο στοιχείο του διανύσµατος στη θέση pos void setelementat(object Item, int pos) Τοποθετεί στο υπ αριθµό pos στοιχείο του διανύσµατος το Item boolean removeelement(object Item) Διαγράφει την πρώτη εµφάνιση του στοιχείου Item από το διάνυσµα boolean isempty( ) Ελέγχει εάν το διάνυσµα δεν έχει καθόλου στοιχεία Object firstelement( ) Επιστρέφει το πρώτο στοιχείο του διανύσµατος (αυτό που βρίσκεται στη θέση 0) Βασικές Μέθοδοι (2/2) Object lastelement( ) Επιστρέφει το τελευταίο στοιχείο του διανύσµατος Object elementat(int pos) Επιστρέφει το στοιχείο του διανύσµατος που βρίσκεται στη θέση pos boolean contains(object Item) Ελέγχει εάν το Item αποτελεί στοιχείο του διανύσµατος void trimtosize( ) Ψαλιδίζει τη χωρητικότητα του διανύσµατος ώστε να γίνει ίση µε το τρέχον µέγεθός του int size( ) Επιστρέφει το τρέχον µέγεθος του διανύσµατος int capacity( ) Επιστρέφει τη χωρητικότητα του διανύσµατος 5