SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
∆οµές ∆εδοµένων σε C
Μάθηµα 7:
∆υαδικά ∆ένδρα Αναζήτησης
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
1. Ορισµός ∆∆Α
2. Βασικές Πράξεις
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
Β. Ασκήσεις
2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
1. Ορισµός ∆υαδικού ∆ένδρου Αναζήτησης
3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Το «∆υαδικό ∆ένδρο Αναζήτησης» (∆∆Α) είναι ένα δένδρο στο οποίο σε κάθε κόµβο έχει
αποθηκευτεί µία τιµή v και επιπλέον:
• Στις κορυφές του αριστερού υποδένδρου, έχουν αποθηκευτεί τιµές µικρότερες της v.
• Στις κορυφές του δεξιού υποδένδρου έχουν αποθηκευτεί τιµές µεγαλύτερες της v.
Σηµαντικό: Η ενδοδιατεταγµένη διαδροµή σε ένα ∆∆Α επιστρέφει τους αριθµούς του ∆∆Α σε αύξουσα σειρά
Παραδείγµατα ∆υαδικών ∆ένδρων Αναζήτησης:
11
146
19134
5 2617
∆∆Α που αποθηκεύει αριθµούς
john
ben pam
alice eve max tom
∆∆Α που αποθηκεύει συµβολοσειρές
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
2. Βασικές Πράξεις
4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Οι βασικές πράξεις σε ένα δυαδικό δένδρο αναζήτησης (επεκτείνοντας το δυαδικό δένδρο) είναι:
• Εισαγωγή ενός στοιχείου στο δένδρο (insert_BST)
• Αναζήτηση ενός στοιχείου στο δένδρο (search_BST)
• ∆ιαγραφή ενός στοιχείου από το δένδρο (delete_BST)
Παρατήρηση: Επεκτείνουµε τον ορισµό του ∆υαδικού ∆ένδρου, αφού η εισαγωγή και η διαγραφή
κόµβων από το ∆∆Α θα ακολουθούν κάποιο συγκεκριµένο αλγόριθµο, ώστε µετά από την εκτέλεση
των πράξεων το δένδρο να εξακολουθεί να έχει την ιδιότητα του ∆∆Α.
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Η συνάρτηση «Αναζήτηση» ψάχνει για το στοιχείο Χ στο δυαδικό δένδρο αναζήτησης και
επιστρέφει ΝΑΙ/ΌΧΙ ανάλογα µε το αν το στοιχείο υπάρχει στο δένδρο:
Σκιαγράφηση αλγορίθµου:
Θέτει Κ = ρίζα του δένδρου
Επανέλαβε όσο Κ ≠ KENO
Αν (Χ = Κ)
Επέστρεψε ΝΑΙ
Αλλιώς αν (Χ > Κ)
Θέσε Κ=δεξί παιδί της Κ.
Αλλιώς αν (Χ < Κ)
Θέσε Κ=αριστερό παιδί της Κ.
Τέλος-Επανάληψης
Επέστρεψε ΟΧΙ
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Παράδειγµα Αναζήτησης του δεδοµένου 8 (κόκκινο χρώµα) και του 17 (µπλέ χρώµα)
Αναζήτηση του 8: 10(αριστερά), 6(δεξιά), 7(δεξιά), 8 (βρέθηκε). Απάντηση: ΝΑΙ
Αναζήτηση του 17: 10(δεξιά), 14 (δεξιά), 19(αριστερά). ΚΕΝΟ. Απάντηση: ΟΧΙ
10
146
1975
82
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α
7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_search_BST(): anazitisi tou x sto
DDA me riza root */
int TR_search_BST(TREE_PTR root, elem x)
{
TREE_PTR current;
current=root;
while (current!=NULL)
{
if (x == current->data)
return TRUE;
else if (x < current->data)
current=current->left;
else // x > current->data
current=current->right;
}
return FALSE;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Σκιαγράφηση αλγορίθµου:
Αν Τ είναι άδειο, τοποθέτησε το x ως ρίζα. Επέστρεψε TRUE
Θέσε Κ=ρίζα του δένδρου
Επανέλαβε:
Αν x==K
Επέστρεψε FALSE
Αλλιώς αν x<K
Αν Κ δεν έχει αριστερό παιδί:
Κατασκεύασε αριστερό παιδί της K με δεδομένο x. Επέστρεψε TRUE
Αλλιώς
Θέσε K=αριστερό παιδί του Κ.
Αλλιώς // x>K
Αν Κ δεν έχει δεξί παιδί:
Κατασκεύασε δεξί παιδί του K με δεδομένο x. Επέστρεψε TRUE
Αλλιώς
Θέσε K=δεξί παιδί του Κ.
Ο αλγόριθµος «Εισαγωγής σε ∆∆Α» δεδοµένου ενός ∆∆Α Τ και ενός δεδοµένου x:
• Αν το x υπάρχει στο δένδρο Τ επιστρέφει FALSE
• Αν το x δεν υπάρχει στο δένδρο Τ το εισάγει σε θέση που σέβεται το ∆∆Α.
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Παράδειγµα Εισαγωγής του δεδοµένου 17
10
146
1975
82
3
10
146
1975
82
3
17
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_insert_BST(): eisagwgi tou x
sto DDA me riza root */
int TR_insert_BST(TREE_PTR *root, elem x)
{
TREE_PTR current;
/* 1. Eisagwgi se adeio dentro */
if (*root==NULL)
{
TR_insert_root(root, x);
return TRUE;
}
/* 2. Anazitisi + Eisagwgi sto dendro */
current=*root;
while (1)
{
if (x == current->data)
return FALSE;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α
11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
else if (x < current->data)
{
if (current->left==NULL)
{
TR_insert_left(current,x);
return TRUE;
}
else
current=current->left;
}
else // x > current->data
{
if (current->right==NULL)
{
TR_insert_right(current,x);
return TRUE;
}
else
current=current->right;
}
}
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
Ο αλγόριθµος «∆ιαγραφής σε ∆∆Α» παίρνει ως όρισµα ένα δένδρο Τ και ένα δεδοµένο x (που
υπάρχει στο δένδρο) και ξεχωρίζει 3 περιπτώσεις:
• Αν ο κόµβος του x δεν έχει παιδιά, τότε διαγράφουµε τον κόµβο.
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «8»
ΠΡΙΝ 10
146
1975
2
3
ΜΕΤΑ
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει ένα παιδί, τότε διαγράφουµε τον κόµβο και το παιδί του τον
αντικαθιστά.
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «5»
ΠΡΙΝ ΜΕΤΑ 10
146
197
8
2
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη
διαδροµή και αντικαθιστούµε τον x µε αυτόν.
• Περίπτωση 1: Το δεξί παιδί του x δεν έχει αριστερό παιδί
• Τότε ο x αντικαθίσταται από το δεξί παιδί του (που διατηρεί το δεξί υποδένδρο του).
10
146
1975
82
3
Παράδειγµα: ∆ιαγραφή του «6»
ΠΡΙΝ ΜΕΤΑ 10
147
1985
2
3
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
• Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη
διαδροµή (y) και αντικαθιστούµε τον x µε αυτόν.
• Περίπτωση 2: Το δεξί παιδί του x έχει αριστερό παιδί
• Ο y παίρνει τη θέση του x
• Ο κόµβος του y αντικαθίσταται από το δεξί υποδένδρο του y
Παράδειγµα: ∆ιαγραφή του «10»
ΠΡΙΝ
ΜΕΤΑ
10
147
19135
2 11
12
11
147
19135
2 12
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* TR_delete_BST(): diagrafi tou x
apo to DDA me riza root */
int TR_delete_BST(TREE_PTR *root, elem x)
{
TREE_PTR current, parent, nextOrdered;
int p; /* 1. deksi paidi, 2. aristero paidi tou current */
int temp;
/* 1. Anazitisi tou komvou */
parent=NULL;
current=*root;
while (current!=NULL)
{
if (x == current->data)
break;
else if (x < current->data)
{
parent=current;
p=1;
current=current->left;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
else // x > current->data
{
parent=current;
p=2;
current=current->right;
}
}
if (current==NULL)
return FALSE;
/* 2.1 An den exei paidia */
if (current->left==NULL && current->right==NULL)
{
free(current);
if (parent==NULL)
*root=NULL;
else
if (p==1)
parent->left=NULL;
else
parent->right=NULL;
return TRUE;
}
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/* 2.2 Exei mono aristero paidi */
else if (current->left!=NULL && current->right==NULL)
{
if (parent==NULL)
*root=current->left;
else
if (p==1)
parent->left=current->left;
else
parent->right=current->left;
free(current);
return TRUE;
}
/* 2.3 Exei mono deksi paidi */
else if (current->left==NULL && current->right!=NULL)
{
if (parent==NULL)
*root=current->right;
else
if (p==1)
parent->left=current->right;
else
parent->right=current->right;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
free(current);
return TRUE;
}
/* 2.4 Exei aristero kai deksi paidi */
else
{
/* 2.4.1 Vriskei ton epomeno stin endodiatetagmeni */
p=1;
nextOrdered=current->right;
while (nextOrdered->left!=NULL)
{
parent=nextOrdered;
nextOrdered=nextOrdered->left;
p=2;
}
/*2.4.2 Antallassei times me ton komvo pou diagrafetai */
current->data=nextOrdered->data;
A. Θεωρία
1. ∆υαδικό ∆ένδρο Αναζήτησης
5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α
20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
/*2.4.3 Diagrafei ton komvo */
if (p==1) /*2.4.3.1 O epomenos einai to deksi paidi */
{
current->right=nextOrdered->right;
free(nextOrdered);
}
else
{
parent->left=nextOrdered->right;
free(nextOrdered);
}
}
}
Β. Ασκήσεις
Εφαρµογή 1: Μελέτη Προγράµµατος
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 21
Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δυαδικών
δένδρων αναζήτησης που µελετήσαµε στο µάθηµα.
Β. Ασκήσεις
Εφαρµογή 2: Εκτέλεση «µε το χέρι»
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 22
1. Εισάγετε τα ακόλουθα δεδοµένα σε ένα ∆∆Α: «10 6 3 9 12 5 4 2 1 8».
2. ∆ιαγράψτε τον κόµβο 12
3. Εισάγετε τον κόµβο 7
Β. Ασκήσεις
Εφαρµογή 2: Εκτέλεση «µε το χέρι»
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 23
4. ∆ιαγράψτε τον κόµβο 3
5. ∆ώστε την ενδοδιατεταγµένη διαπέραση του δένδρου
6. Κατασκεύαστε πλήρες δυαδικό δένδρο αναζήτησης που να περιέχει τα περιεχόµενα του
δένδρου .

Mais conteúdo relacionado

Mais procurados

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
Dimitris Psounis
 
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
Dimitris Psounis
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
Dimitris Psounis
 

Mais procurados (20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
ΠΛΗ20 ΜΑΘΗΜΑ 4.1
ΠΛΗ20 ΜΑΘΗΜΑ 4.1ΠΛΗ20 ΜΑΘΗΜΑ 4.1
ΠΛΗ20 ΜΑΘΗΜΑ 4.1
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ20 ΜΑΘΗΜΑ 4.5
ΠΛΗ20 ΜΑΘΗΜΑ 4.5ΠΛΗ20 ΜΑΘΗΜΑ 4.5
ΠΛΗ20 ΜΑΘΗΜΑ 4.5
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
 
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
 

Mais de Dimitris Psounis

ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

Mais de Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32
 
ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31
 

Último

5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
Athina Tziaki
 

Último (9)

5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .
 
Σεβασμός .
Σεβασμός                                   .Σεβασμός                                   .
Σεβασμός .
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
 
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
 
Μαθητικές καταλήψεις
Μαθητικές                                  καταλήψειςΜαθητικές                                  καταλήψεις
Μαθητικές καταλήψεις
 

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7

  • 1. ∆οµές ∆εδοµένων σε C Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 1. Ορισµός ∆∆Α 2. Βασικές Πράξεις 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α Β. Ασκήσεις 2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης
  • 3. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 1. Ορισµός ∆υαδικού ∆ένδρου Αναζήτησης 3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Το «∆υαδικό ∆ένδρο Αναζήτησης» (∆∆Α) είναι ένα δένδρο στο οποίο σε κάθε κόµβο έχει αποθηκευτεί µία τιµή v και επιπλέον: • Στις κορυφές του αριστερού υποδένδρου, έχουν αποθηκευτεί τιµές µικρότερες της v. • Στις κορυφές του δεξιού υποδένδρου έχουν αποθηκευτεί τιµές µεγαλύτερες της v. Σηµαντικό: Η ενδοδιατεταγµένη διαδροµή σε ένα ∆∆Α επιστρέφει τους αριθµούς του ∆∆Α σε αύξουσα σειρά Παραδείγµατα ∆υαδικών ∆ένδρων Αναζήτησης: 11 146 19134 5 2617 ∆∆Α που αποθηκεύει αριθµούς john ben pam alice eve max tom ∆∆Α που αποθηκεύει συµβολοσειρές
  • 4. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 2. Βασικές Πράξεις 4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Οι βασικές πράξεις σε ένα δυαδικό δένδρο αναζήτησης (επεκτείνοντας το δυαδικό δένδρο) είναι: • Εισαγωγή ενός στοιχείου στο δένδρο (insert_BST) • Αναζήτηση ενός στοιχείου στο δένδρο (search_BST) • ∆ιαγραφή ενός στοιχείου από το δένδρο (delete_BST) Παρατήρηση: Επεκτείνουµε τον ορισµό του ∆υαδικού ∆ένδρου, αφού η εισαγωγή και η διαγραφή κόµβων από το ∆∆Α θα ακολουθούν κάποιο συγκεκριµένο αλγόριθµο, ώστε µετά από την εκτέλεση των πράξεων το δένδρο να εξακολουθεί να έχει την ιδιότητα του ∆∆Α.
  • 5. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Η συνάρτηση «Αναζήτηση» ψάχνει για το στοιχείο Χ στο δυαδικό δένδρο αναζήτησης και επιστρέφει ΝΑΙ/ΌΧΙ ανάλογα µε το αν το στοιχείο υπάρχει στο δένδρο: Σκιαγράφηση αλγορίθµου: Θέτει Κ = ρίζα του δένδρου Επανέλαβε όσο Κ ≠ KENO Αν (Χ = Κ) Επέστρεψε ΝΑΙ Αλλιώς αν (Χ > Κ) Θέσε Κ=δεξί παιδί της Κ. Αλλιώς αν (Χ < Κ) Θέσε Κ=αριστερό παιδί της Κ. Τέλος-Επανάληψης Επέστρεψε ΟΧΙ
  • 6. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Παράδειγµα Αναζήτησης του δεδοµένου 8 (κόκκινο χρώµα) και του 17 (µπλέ χρώµα) Αναζήτηση του 8: 10(αριστερά), 6(δεξιά), 7(δεξιά), 8 (βρέθηκε). Απάντηση: ΝΑΙ Αναζήτηση του 17: 10(δεξιά), 14 (δεξιά), 19(αριστερά). ΚΕΝΟ. Απάντηση: ΟΧΙ 10 146 1975 82 3
  • 7. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 3. Υλοποίηση σε C: Αναζήτηση σε ∆∆Α 7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_search_BST(): anazitisi tou x sto DDA me riza root */ int TR_search_BST(TREE_PTR root, elem x) { TREE_PTR current; current=root; while (current!=NULL) { if (x == current->data) return TRUE; else if (x < current->data) current=current->left; else // x > current->data current=current->right; } return FALSE; }
  • 8. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Σκιαγράφηση αλγορίθµου: Αν Τ είναι άδειο, τοποθέτησε το x ως ρίζα. Επέστρεψε TRUE Θέσε Κ=ρίζα του δένδρου Επανέλαβε: Αν x==K Επέστρεψε FALSE Αλλιώς αν x<K Αν Κ δεν έχει αριστερό παιδί: Κατασκεύασε αριστερό παιδί της K με δεδομένο x. Επέστρεψε TRUE Αλλιώς Θέσε K=αριστερό παιδί του Κ. Αλλιώς // x>K Αν Κ δεν έχει δεξί παιδί: Κατασκεύασε δεξί παιδί του K με δεδομένο x. Επέστρεψε TRUE Αλλιώς Θέσε K=δεξί παιδί του Κ. Ο αλγόριθµος «Εισαγωγής σε ∆∆Α» δεδοµένου ενός ∆∆Α Τ και ενός δεδοµένου x: • Αν το x υπάρχει στο δένδρο Τ επιστρέφει FALSE • Αν το x δεν υπάρχει στο δένδρο Τ το εισάγει σε θέση που σέβεται το ∆∆Α.
  • 9. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Παράδειγµα Εισαγωγής του δεδοµένου 17 10 146 1975 82 3 10 146 1975 82 3 17
  • 10. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_insert_BST(): eisagwgi tou x sto DDA me riza root */ int TR_insert_BST(TREE_PTR *root, elem x) { TREE_PTR current; /* 1. Eisagwgi se adeio dentro */ if (*root==NULL) { TR_insert_root(root, x); return TRUE; } /* 2. Anazitisi + Eisagwgi sto dendro */ current=*root; while (1) { if (x == current->data) return FALSE;
  • 11. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 4. Υλοποίηση σε C: Εισαγωγή σε ∆∆Α 11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης else if (x < current->data) { if (current->left==NULL) { TR_insert_left(current,x); return TRUE; } else current=current->left; } else // x > current->data { if (current->right==NULL) { TR_insert_right(current,x); return TRUE; } else current=current->right; } } }
  • 12. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης Ο αλγόριθµος «∆ιαγραφής σε ∆∆Α» παίρνει ως όρισµα ένα δένδρο Τ και ένα δεδοµένο x (που υπάρχει στο δένδρο) και ξεχωρίζει 3 περιπτώσεις: • Αν ο κόµβος του x δεν έχει παιδιά, τότε διαγράφουµε τον κόµβο. 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «8» ΠΡΙΝ 10 146 1975 2 3 ΜΕΤΑ
  • 13. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει ένα παιδί, τότε διαγράφουµε τον κόµβο και το παιδί του τον αντικαθιστά. 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «5» ΠΡΙΝ ΜΕΤΑ 10 146 197 8 2 3
  • 14. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη διαδροµή και αντικαθιστούµε τον x µε αυτόν. • Περίπτωση 1: Το δεξί παιδί του x δεν έχει αριστερό παιδί • Τότε ο x αντικαθίσταται από το δεξί παιδί του (που διατηρεί το δεξί υποδένδρο του). 10 146 1975 82 3 Παράδειγµα: ∆ιαγραφή του «6» ΠΡΙΝ ΜΕΤΑ 10 147 1985 2 3
  • 15. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης • Αν ο κόµβος του x έχει δύο παιδιά, τότε: Βρίσκουµε τον επόµενο στην ενδοδιατεταγµένη διαδροµή (y) και αντικαθιστούµε τον x µε αυτόν. • Περίπτωση 2: Το δεξί παιδί του x έχει αριστερό παιδί • Ο y παίρνει τη θέση του x • Ο κόµβος του y αντικαθίσταται από το δεξί υποδένδρο του y Παράδειγµα: ∆ιαγραφή του «10» ΠΡΙΝ ΜΕΤΑ 10 147 19135 2 11 12 11 147 19135 2 12
  • 16. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* TR_delete_BST(): diagrafi tou x apo to DDA me riza root */ int TR_delete_BST(TREE_PTR *root, elem x) { TREE_PTR current, parent, nextOrdered; int p; /* 1. deksi paidi, 2. aristero paidi tou current */ int temp; /* 1. Anazitisi tou komvou */ parent=NULL; current=*root; while (current!=NULL) { if (x == current->data) break; else if (x < current->data) { parent=current; p=1; current=current->left; }
  • 17. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης else // x > current->data { parent=current; p=2; current=current->right; } } if (current==NULL) return FALSE; /* 2.1 An den exei paidia */ if (current->left==NULL && current->right==NULL) { free(current); if (parent==NULL) *root=NULL; else if (p==1) parent->left=NULL; else parent->right=NULL; return TRUE; }
  • 18. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /* 2.2 Exei mono aristero paidi */ else if (current->left!=NULL && current->right==NULL) { if (parent==NULL) *root=current->left; else if (p==1) parent->left=current->left; else parent->right=current->left; free(current); return TRUE; } /* 2.3 Exei mono deksi paidi */ else if (current->left==NULL && current->right!=NULL) { if (parent==NULL) *root=current->right; else if (p==1) parent->left=current->right; else parent->right=current->right;
  • 19. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης free(current); return TRUE; } /* 2.4 Exei aristero kai deksi paidi */ else { /* 2.4.1 Vriskei ton epomeno stin endodiatetagmeni */ p=1; nextOrdered=current->right; while (nextOrdered->left!=NULL) { parent=nextOrdered; nextOrdered=nextOrdered->left; p=2; } /*2.4.2 Antallassei times me ton komvo pou diagrafetai */ current->data=nextOrdered->data;
  • 20. A. Θεωρία 1. ∆υαδικό ∆ένδρο Αναζήτησης 5. Υλοποίηση σε C: ∆ιαγραφή σε ∆∆Α 20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης /*2.4.3 Diagrafei ton komvo */ if (p==1) /*2.4.3.1 O epomenos einai to deksi paidi */ { current->right=nextOrdered->right; free(nextOrdered); } else { parent->left=nextOrdered->right; free(nextOrdered); } } }
  • 21. Β. Ασκήσεις Εφαρµογή 1: Μελέτη Προγράµµατος ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 21 Μελετήστε το project tree.dev στο οποίο υλοποιούνται οι βασικές πράξεις των δυαδικών δένδρων αναζήτησης που µελετήσαµε στο µάθηµα.
  • 22. Β. Ασκήσεις Εφαρµογή 2: Εκτέλεση «µε το χέρι» ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 22 1. Εισάγετε τα ακόλουθα δεδοµένα σε ένα ∆∆Α: «10 6 3 9 12 5 4 2 1 8». 2. ∆ιαγράψτε τον κόµβο 12 3. Εισάγετε τον κόµβο 7
  • 23. Β. Ασκήσεις Εφαρµογή 2: Εκτέλεση «µε το χέρι» ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 7: ∆υαδικά ∆ένδρα Αναζήτησης 23 4. ∆ιαγράψτε τον κόµβο 3 5. ∆ώστε την ενδοδιατεταγµένη διαπέραση του δένδρου 6. Κατασκεύαστε πλήρες δυαδικό δένδρο αναζήτησης που να περιέχει τα περιεχόµενα του δένδρου .