SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
∆οµές ∆εδοµένων σε C
Μάθηµα 3:
Ουρά
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Θεωρία
1. Ουρά
1. Ορισµός Ουράς
2. Βασικές Πράξεις
2. Απλή Ουρά µε Πίνακα
1. Γενικά
2. Υλοποίηση σε C: ∆ηλώσεις
3. Υλοποίηση σε C: Αρχικοποίηση
4. Υλοποίηση σε C: Έλεγχοι – Κενή
Ουρά και Γεµάτη Ουρά
5. Υλοποίηση σε C: Προσθήκη
Στοιχείου
6. Υλοποίηση σε C: Αποµάκρυνση
Στοιχείου
7. Υλοποίηση σε C: Παράδειγµα
2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
3. Κυκλική Ουρά
1. Γενικά
2. Υλοποίηση σε C: ∆ηλώσεις
3. Υλοποίηση σε C: Αρχικοποίηση
4. Υλοποίηση σε C: Έλεγχοι – Κενή
Ουρά
5. Υλοποίηση σε C: Έλεγχοι – Γεµάτη
Ουρά
6. Υλοποίηση σε C: Προσθήκη
Στοιχείου
7. Υλοποίηση σε C: Αποµάκρυνση
Στοιχείου
8. Υλοποίηση σε C: Παράδειγµα
Β. Ασκήσεις
A. Θεωρία
1. Ουρά
1. Ορισµός Ουράς
3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η «Ουρά» είναι µια δοµή δεδοµένων µε γραµµική διάταξη στην οποία:
• Η προσθήκη (enqueue) ενός στοιχείου, γίνεται στο τέλος της ουράς
• Η αποµάκρυνση (dequeue) ενός στοιχείου, γίνεται στην αρχή της ουράς
enqueue(2)
2
Παράδειγµα:
• Η ουρά των πελατών στο ταµείο µιας τράπεζας!
Σηµαντική Ιδιότητα:
• Το πρώτο στοιχείο που προστέθηκε στην ουρά είναι το πρώτο που θα εξαχθεί (First In – First
Out: FIFO)
enqueue(4)
2 4
4
dequeue( )
enqueue(5)
4
enqueue(3)
4 5
5
3
A. Θεωρία
1. Ουρά
2. Βασικές Πράξεις
4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Οι βασικές πράξεις σε µία ουρά είναι:
• Αρχικοποίηση της ουράς (init)
• Προσθήκη ενός στοιχείου στην ουρά (enqueue)
• Αποµάκρυνση ενός στοιχείου από τη ουρά (dequeue)
• Έλεγχος αν η ουρά είναι κενή (empty)
• Έλεγχος αν η ουρά είναι γεµάτη (full)
Υπάρχουν τρεις υλοποιήσεις:
• Με στατικό πίνακα (σηµερινό µάθηµα)
• Απλή ουρά (µε πίνακα)
• Κυκλική ουρά
• Με απλά συνδεδεµένη λίστα (επόµενο µάθηµα)
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
1. Εισαγωγή
5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Στην πρώτη υλοποίηση (απλή ουρά) θα χρησιµοποιήσουµε:
• Έναν στατικό πίνακα N θέσεων για να αποθηκεύσουµε τα στοιχεία της ουράς
• Μία ακέραια µεταβλητή (finish) που θα δείχνει το τέλος της ουράς
• (Εννοείται ότι η αρχή της ουράς θα είναι το 0)
Γλώσσα C
a[0]
…
a[1] a[2] a[2] a[N-1]
finish=2
4 5 34 5 3
Ουρά
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
2. Υλοποίηση σε C: ∆ηλώσεις
6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Οι δηλώσεις σε C είναι οι ακόλουθες:
• Η ουρά είναι µία δοµή (struct) µε τα εξής στοιχεία:
• Ένας πίνακας µε QUEUE_SIZE στοιχεία
• Μία ακέραια µεταβλητή (finish) που δείχνει το τέλος της ουράς µε τιµή:
• Από 0…QUEUE_SIZE-1 αν η ουρά έχει τουλάχιστον ένα στοιχείο
• -1 αν η ουρά είναι άδεια.
#define QUEUE_SIZE 10 /* Megethos pinaka ouras */
typedef int elem; /* typos dedomenwn ouras */
struct queue{
elem array[QUEUE_SIZE]; /* pinakas stoixeiwn */
int finish; /* telos tis ouras */
};
typedef struct queue QUEUE; /* Sinwnimo tis ouras */
…
finish=2
2 6 4
Αναπαράσταση:
0 1 2 3 QUEUE_SIZE-1
array
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
3. Υλοποίηση σε C: Αρχικοποίηση Ουράς
7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η αρχικοποίηση γίνεται θέτοντας το τέλος της ουράς ίσο µε -1
/* QU_init(): arxikopoiei tin oura */
void QU_init(QUEUE *q)
{
q->finish=-1;
}
…
finish=??
ΠΡΙΝ:
0 1 2 3 QUEUE_SIZE-1
array
…
finish=-1
0 1 2 3 QUEUE_SIZE-1
array
ΜΕΤΑ:
Προσοχή:
• Πάντα προτού ξεκινάµε την χρήση της ουράς θα πρέπει να καλούµε µία φορά αυτήν τη
συνάρτηση!
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά και Γεµάτη Ουρά
8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Ο έλεγχος αν η ουρά είναι κενή (αντίστοιχα γεµάτη), γίνεται βλέποντας αν η µεταβλητή finish
είναι ίση µε -1 (αντίστοιχα N-1)
/* QU_empty(): epistrefei TRUE/FALSE
* analoga me to an i oura einai adeia */
int QU_empty(QUEUE q)
{
return q.finish==-1;
}
/* QU_full(): epistrefei TRUE/FALSE
* analoga me to an i oura einai gemati */
int QU_full(QUEUE q)
{
return q.finish==QUEUE_SIZE-1;
}
5
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
5. Υλοποίηση σε C: Προσθήκη Στοιχείου
9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η προσθήκη στην ουρά γίνεται προωθώντας το στοιχείο στη θέση finish+1 (εφόσον χωράει στην
ουρά)
/* QU_enqueue(): Eisagei to x stin oura q
* epistrefei TRUE: se periptwsi epitixias
* FALSE: se periptwsi apotixias */
int QU_enqueue(QUEUE *q,elem x)
{
if (QU_full(*q))
return FALSE;
else
{
q->finish++;
q->array[q->finish]=x;
return TRUE;
}
}
…
finish=2
2 6 4
0 1 2 3 QUEUE_SIZE-1
array
ΠΡΙΝ: ΜΕΤΑ (π.χ. προσθήκη του «5»):
…
finish=3
2 6 4
0 1 2 3 QEUEUE_SIZE-1
array
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου
10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η αποµάκρυνση (του πρώτου) στοιχείου της ουράς γίνεται ως εξής:
1. Αποθηκεύεται το στοιχείο που είναι στην αρχή της ουράς (για να επιστραφεί)
2. Μετακινούνται τα υπόλοιπα στοιχεία κατά µία θέση αριστερά
3. ∆ιορθώνεται το finish (µειώνεται κατά 1)
…
finish=2
2 6 4
0 1 2 3 QUEUE_SIZE-1
array
ΠΡΙΝ:
ΜΕΤΑ:
…6 4
0 1 2 3 QUEUE_SIZE-1
array
finish=1
*x=2
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου
11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
/* QU_dequeue(): Kanei apomakrinsi tou prwtou stoixeiou tis ouras
* epistrefei TRUE: se periptwsi epitixias
* FALSE: se periptwsi apotixias */
int QU_dequeue(QUEUE *q,elem *x)
{
int i;
if (QU_empty(*q))
return FALSE;
else
{
/* 1. Apothikeysi tou stoixeiou pou eksagetai*/
*x=q->array[0];
/* 2. Aristeri metakinisi twn stoixeiwn kata mia thesi */
for (i=0; i<q->finish; i++)
q->array[i]=q->array[i+1];
/* 3. To finish meiwnetai kata 1 */
q->finish--;
return TRUE;
}
}
A. Θεωρία
2. Απλή Ουρά µε Πίνακα
7. Υλοποίηση σε C: Παράδειγµα
12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Μεταγλωττίστε και εκτελέστε το project queue.dev στο οποίο:
Το queue.h έχει τα πρωτότυπα των συναρτήσεων και την δήλωση της δοµής
Το queue.c έχει τα σώµατα των συναρτήσεων
Το main.c έχει ένα πρόγραµµα που επιδεικνύει την χρήση µίας ουράς ακεραίων.
«Παίξτε» µε το πρόγραµµα ώστε να γίνει πλήρως κατανοητή η λειτουργία της ουράς.
Υπενθύµιση:
• Το σπάσιµο ενός προγράµµατος σε επιµέρους αρχεία µελετήθηκε στο «Γλώσσα C – Μάθηµα 14:
Εµβέλεια Μεταβλητών»
A. Θεωρία
3. Κυκλική Ουρά
1. Η ανάγκη για την Κυκλική Ουρά
13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η πράξη της αποµάκρυνσης απαιτεί την µετακίνηση των στοιχείων της ουράς κατά µία θέση
αριστερά, το οποίο κρίνεται µη αποδοτικό.
Μπορούµε να επιτύχουµε βελτίωση στο χρόνο αν βάλουµε άλλη µία µεταβλητή που να δείχνει
την αρχή της ουράς και να έχουµε ως όρια της ουράς αυτές τις δύο µεταβλητές (χωρίς να
κάνουµε µετακίνηση των στοιχείων της ουράς). Για παράδειγµα:
enqueue(2)
2
enqueue(4)
2 4
4
dequeue( )
enqueue(5)
4
enqueue(3)
4 5
5
3
start=0
finish=0
start=0 finish=1
start=1
finish=1
start=1 finish=2
start=1 finish=3
start=-1
finish=-1
A. Θεωρία
3. Κυκλική Ουρά
1. Η ανάγκη για την Κυκλική Ουρά
14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Για να ξεπεραστεί το (νέο) πρόβληµα, ότι κάποια στιγµή θα φτάσουµε στο τέλος του πίνακα
(οπότε και δεν θα µπορούµε να εισάγουµε ένα νέο στοιχείο στον πίνακα)
Εισάγεται η έννοια της κυκλικής ουράς!
Όπου πλέον όταν φτάσουµε στο τέλος του πίνακα οι νέες εισαγωγές θα γίνονται στην
αρχή του πίνακα
∆ηλαδή βλέπουµε τον πίνακα ως κύκλο (όπου η επόµενη θέση της Ν-1 είναι η 0)
4 5 3
start=1 finish=3
0 1 2 3
array
4 5 6 7
0
array
1
2
34
5
6
7 start=1
finish=3
2 61
start=6finish=0
0 1 2 3
array
4 5 6 7
0
array
1
2
34
5
6
7start=6
finish=1
4
5
3
2
6 1
A. Θεωρία
3. Κυκλική Ουρά
2. Υλοποίηση σε C: ∆ηλώσεις
15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Οι δηλώσεις σε C είναι οι ακόλουθες:
• Η ουρά είναι µία δοµή (struct) µε τα εξής στοιχεία:
• Ένας πίνακας µε QUEUE_SIZE στοιχεία
• ∆ύο ακέραιες µεταβλητές (start και finish) που δείχνουν αντίστοιχα την αρχή και το τέλος της ουράς µε
τιµές (µε start=finish=-1 αν η ουρά είναι άδεια).
#define QUEUE_SIZE 10 /* Megethos pinaka ouras */
typedef int elem; /* typos dedomenwn ouras */
struct queue{
elem array[QUEUE_SIZE]; /* pinakas stoixeiwn */
int start; /* arxi tis ouras */
int finish; /* telos tis ouras */
};
typedef struct queue QUEUE; /* Sinwnimo tis ouras */
Αναπαράσταση: 0
array
1
2
34
5
6
7 start=1
finish=3
4
5
3
A. Θεωρία
3. Κυκλική Ουρά
3. Υλοποίηση σε C: Αρχικοποίηση Ουράς
16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η αρχικοποίηση γίνεται θέτοντας την αρχή και το τέλος της ουράς ίσο µε -1
/* QU_init(): arxikopoiei tin oura */
void QU_init(QUEUE *q)
{
q->start =-1;
q->finish=-1;
}
ΠΡΙΝ: ΜΕΤΑ:
0
array
1
2
34
5
6
7
QUEUE_SIZE=8
start=??
finish=??
0
array
1
2
34
5
6
7
QUEUE_SIZE=8
start=-1
finish=-1
A. Θεωρία
3. Κυκλική Ουρά
4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά
17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Ο έλεγχος αν η ουρά είναι κενή γίνεται βλέποντας αν η µεταβλητή start (και η µεταβλητή
finish) είναι ίση µε -1
• Αρκεί να ελέγξουµε τη µία από τις δύο (αφού µεριµνάµε ότι η υλοποίηση των βασικών πράξεων
είναι ορθή και αυτός που χρησιµοποιεί την ουρά δεν έχει πρόσβαση στην υλοποίηση)
/* QU_empty(): epistrefei TRUE/FALSE
* analoga me to an i oura einai adeia */
int QU_empty(QUEUE q)
{
return q.finish==-1;
}
A. Θεωρία
3. Κυκλική Ουρά
5. Υλοποίηση σε C: Έλεγχοι – Γεµάτη Ουρά
18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Ο έλεγχος αν η ουρά είναι γεµάτη γίνεται βλέποντας αν η µεταβλητή finish έχει τιµή 1 λιγότερο
από τη µεταβλητή start (δηλαδή start==finish+1)
• Μόνο στην περίπτωση που finish=QUEUE_SIZE-1 τότε πρέπει να ελέγξουµε αν start==0
Αυτό µπορεί να γίνει µε τον παρακάτω κοµψό κώδικα:
/* QU_full(): epistrefei TRUE/FALSE
* analoga me to an i oura einai gemati */
int QU_full(QUEUE q)
{
return q.start==(q.finish+1)%QUEUE_SIZE;
}
Υπενθύµιση:
• Ο τελεστής % επιστρέφει το υπόλοιπο της διαίρεσης δύο αριθµών (Γλώσσα C – Μάθηµα 4).
• Εδώ τον χρησιµοποιούµε ώστε µε µία εντολή να προκύπτει το start είτε ίσο µε την επόµενη
θέση, είτε ίσο µε 0.
A. Θεωρία
3. Κυκλική Ουρά
6. Υλοποίηση σε C: Προσθήκη Στοιχείου
19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η προσθήκη ενός στοιχείου στην ουρά γίνεται (εφόσον αυτή δεν είναι γεµάτη) ως εξής:
• Το finish παίρνει τιµή την επόµενη θέση του πίνακα:
• Την τιµή finish+1 (αν το finish < QUEUE_SIZE-1)
• Την τιµή 0 (αν το finish = QUEUE_SIZE-1)
• Το στοιχείο αποθηκεύεται στην θέση finish.
ΠΡΙΝ:
0
array
1
2
34
5
6
7 start=1
finish=3
4
5
3
0
array
1
2
34
5
6
7 start=1
4
5
35
finish=4
QUEUE_SIZE=8
QUEUE_SIZE=8
5
ΜΕΤΑ (π.χ. προσθήκη του «5»):
A. Θεωρία
3. Κυκλική Ουρά
6. Υλοποίηση σε C: Προσθήκη Στοιχείου
20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
/* QU_enqueue(): Eisagei to x stin oura q
* epistrefei TRUE: se periptwsi epitixias
* FALSE: se periptwsi apotixias */
int QU_enqueue(QUEUE *q,elem x)
{
if (QU_full(*q))
return FALSE;
else
{
if (QU_empty(*q))
{
q->start=0;
q->finish=0;
}
else
{
q->finish=(q->finish+1)%QUEUE_SIZE;
}
q->array[q->finish]=x;
return TRUE;
}
}
start=1
A. Θεωρία
3. Κυκλική Ουρά
6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου
21∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Η αποµάκρυνση (του πρώτου) στοιχείου από την ουρά γίνεται (εφόσον αυτή δεν είναι άδεια):
• Αποθηκεύοντας το στοιχείο της θέσης start (ώστε να επιστραφεί)
και:
• Αν το start είναι < από QUEUE_SIZE-1, τότε θέτουµε start=start+1
• Αν το start είναι = µε QUEUE_SIZE-1 τότε θέτουµε start=0
ΠΡΙΝ:
0
array
1
2
34
5
6
7 start=1
finish=3
4
5
3
0
array
1
2
34
5
6
7
5
3
QUEUE_SIZE=8
QUEUE_SIZE=8
5
ΜΕΤΑ *x=4
finish=3
A. Θεωρία
3. Κυκλική Ουρά
6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου
22∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
/* QU_dequeue(): Kanei apomakrinsi tou prwtou stoixeiou tis ouras
* epistrefei TRUE: se periptwsi epitixias
* FALSE: se periptwsi apotixias */
int QU_dequeue(QUEUE *q,elem *x)
{
if (QU_empty(*q))
return FALSE;
else
{
*x=q->array[q->start];
if (q->start == q->finish) /* H oura adeiase */
{
q->start=-1;
q->finish=-1;
}
else
{
q->start=(q->start+1)%QUEUE_SIZE;
}
return TRUE;
}
}
A. Θεωρία
3. Κυκλική Ουρά
7. Υλοποίηση σε C: Παράδειγµα
23∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
Μεταγλωττίστε και εκτελέστε το project circular_queue.dev στο οποίο:
Το queue.h έχει τα πρωτότυπα των συναρτήσεων και την δήλωση της δοµής
Το queue.c έχει τα σώµατα των συναρτήσεων
Το main.c έχει ένα πρόγραµµα που επιδεικνύει την χρήση µίας ουράς ακεραίων.
«Παίξτε» µε το πρόγραµµα ώστε να γίνει πλήρως κατανοητή η λειτουργία της ουράς.
Β. Ασκήσεις
Εφαρµογή 1: Ταµεία Τράπεζας
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
24
Κατασκευάστε ένα πρόγραµµα το οποίο θα προσοµοιώνει τη λειτουργία µιας τράπεζας µε δύο
ταµεία
Κάθε ταµείο (από τα δύο) θα είναι µια ουρά συµβολοσειρών 80 χαρακτήρων. Κάθε ουρά θα
χωράει το πολύ 5 πελάτες. Στην συµβολοσειρά θα αποθηκεύεται το επώνυµο του πελάτη.
Το κυρίως πρόγραµµα θα υλοποιεί τις εξής ενέργειες (µέσα από ένα µενού επιλογών):
Άφιξη Πελάτη. Θα διαβάζεται από την είσοδο το επώνυµο του πελάτη και έπειτα: Αν
«χωράει» στην πρώτη ουρά, τότε θα τοποθετείται σε αυτήν, αλλιώς θα τοποθετείται στην
δεύτερη ουρά. Αν δεν χωράει σε καµία ουρά, τότε ο πελάτης δεν θα γίνεται δεκτός.
Αναχώρηση Πελάτη. Θα επιλέγεται τυχαία ένα ταµείο που έχει πελάτη και θα
αποµακρύνεται ο 1ος πελάτης του ταµείου. Στην οθόνη θα τυπώνεται το επώνυµό του και
το ταµείο από το οποίο εξυπηρετήθηκε.
Τέλος Προγράµµατος. Θα γίνεται εφικτή, µόνο αν και τα δύο ταµεία είναι άδεια. Σε αντίθετη
περίπτωση θα βγάζει µήνυµα για το ποια ταµεία έχουν ακόµη πελάτη.
Υπόδειξη:
• ∆εδοµένου ότι η κυκλική ουρά είναι «πιο γρήγορη» συνίσταται χρησιµοποιήσετε αυτή, αντί για
την απλή ουρά.
Β. Ασκήσεις
Εφαρµογή 2: Ουρά Προτεραιότητας
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
25
Η ουρά προτεραιότητας είναι µία δοµή δεδοµένων, όπου κάθε στοιχείο που πρόκειται να
εισαχθεί στην ουρά έχει και έναν πρόσθετο ακέραιο αριθµό που καθορίζει την προτεραιότητά
του (όσο µεγαλύτερη η τιµή του αριθµού, τόσο µεγαλύτερη και η προτεραιότητα).
Ένας τρόπος για να υλοποιήσουµε την δοµή δεδοµένων «Ουρά Προτεραιότητας» είναι:
Να τοποθετήσουµε έναν ακόµη ακέραιο αριθµό στο στοιχείο της δοµής που καθορίζει την
προτεραιότητα.
Η εισαγωγή του στοιχείου να γίνεται στην σωστή θέση της ουράς (µε βάση την
προτεραιότητα)
Κατασκευάστε ένα πρόγραµµα επίδειξης της λειτουργίας της ουράς προτεραιότητας,
τροποποιώντας κατάλληλα το project που κατασκευάσαµε για την κυκλική ουρά.
Υπόδειξη:
• ∆εδοµένου ότι η κυκλική ουρά είναι «πιο γρήγορη» συνίσταται χρησιµοποιήσετε αυτή, αντί για
την απλή ουρά.
Β. Ασκήσεις
Εφαρµογή 3: Εκτύπωση Στοιχείων Ουράς
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
26
Θεωρείστε την κυκλική ουρά ακεραίων που κατασκευάσαµε στο µάθηµα.
Θέλουµε να κατασκευάσουµε την δευτερεύουσα πράξη
H οποία θα τυπώνει τα στοιχεία της ουράς.
Επεκτείνετε το project που κατασκευάσαµε για την κυκλική ουρά ώστε να ενσωµατώνει και
αυτήν τη συνάρτηση.
Η συνάρτηση αυτή πρέπει να δηλωθεί στην main, καθώς θεωρείται δευτερεύουσα πράξη.
Προσοχή όµως! Η συνάρτηση αυτή θεωρείται δευτερεύουσα οπότε ∆ΕΝ πρέπει να έχει
πρόσβαση στα µέλη της δοµής.
Υπόδειξη: Μπορείτε όµως να ορίσετε βοηθητικές δοµές (όπως π.χ. µία προσωρινή ουρά)
Στο κυρίως πρόγραµµα και συγκεκριµένα, στην επιλογή για την εκτύπωση της ουράς, να
καλείται αυτή η συνάρτηση.
void QU_print(QUEUE *q)
Β. Ασκήσεις
Εφαρµογή 4: Αντιστροφή Ουράς
∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά
27
Επεκτείνετε το project της εφαρµογής 3, έτσι ώστε να ορίζεται και η εξής δευτερεύουσα πράξη
στις δηλώσεις της ουράς:
Η συνάρτηση αυτή θα αντιστρέφει τα στοιχεία της ουράς (το πρώτο στοιχείο να γίνεται
τελευταίο, το δεύτερο προτελευταίο, κ.οκ.)
Συνίσταται να χρησιµοποιήσετε µία στοίβα!
void QU_reverse(QUEUE *q)

Más contenido relacionado

La actualidad más candente

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣDimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥDimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝDimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣDimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4Dimitris Psounis
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣDimitris Psounis
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣDimitris Psounis
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 Dimitris Psounis
 

La actualidad más candente (20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3ΠΛΗ20 ΜΑΘΗΜΑ 6.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.3
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
 

Más de Dimitris Psounis

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣDimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣDimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣDimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CDimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5Dimitris 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.2Dimitris 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.1Dimitris 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
 

Más 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

Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024Tassos Karampinis
 
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ Iliana Kouvatsou
 
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥ
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥ
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥIliana Kouvatsou
 
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑIliana Kouvatsou
 
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική ΑυτοκρατορίαΗ απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική ΑυτοκρατορίαΑφροδίτη Διαμαντοπούλου
 
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗΗ ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗIliana Kouvatsou
 
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptx
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptxΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptx
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptxIliana Kouvatsou
 
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣΗ ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣIliana Kouvatsou
 
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος ΔόσηςΟ εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος ΔόσηςIliana Kouvatsou
 
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣIliana Kouvatsou
 
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024Tassos Karampinis
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΘεόδωρος Μαραγκούλας
 
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑIliana Kouvatsou
 
Σχέσεις στην εφηβεία_έρωτας
Σχέσεις                     στην εφηβεία_έρωταςΣχέσεις                     στην εφηβεία_έρωτας
Σχέσεις στην εφηβεία_έρωταςDimitra Mylonaki
 
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο ΑλεξανδρούποληςSafe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης2ο Γυμνάσιο Αλεξ/πολης
 
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο ΑλεξανδρούποληςSafe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης2ο Γυμνάσιο Αλεξ/πολης
 
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία ΜπάρδαΒενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία ΜπάρδαIliana Kouvatsou
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξηΟΛΓΑ ΤΣΕΧΕΛΙΔΟΥ
 

Último (20)

Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
 
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειες
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειεςΡατσισμός, ορισμός, είδη, αίτια , συνέπειες
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειες
 
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
 
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥ
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥ
ΠΟΤΕ ΑΝΑΚΑΛΥΦΘΗΚΕ Η ΑΜΕΡΙΚΗ,ΦΙΛΩΝ-ΦΡΑΓΚΟΥ
 
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
 
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική ΑυτοκρατορίαΗ απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
 
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗΗ ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
 
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptx
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptxΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptx
ΒΥΖΑΝΤΙΝΗ ΚΟΥΖΙΝΑ ΚΑΙ ΜΟΔΑ, ΕΛΕΑΝΑ ΣΤΑΥΡΟΠΟΥΛΟΥ.pptx
 
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣΗ ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
 
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος ΔόσηςΟ εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
 
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
 
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
 
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
 
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
 
Σχέσεις στην εφηβεία_έρωτας
Σχέσεις                     στην εφηβεία_έρωταςΣχέσεις                     στην εφηβεία_έρωτας
Σχέσεις στην εφηβεία_έρωτας
 
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο ΑλεξανδρούποληςSafe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Driving - Εργασία για την ασφαλή οδήγηση 2ο Γυμνάσιο Αλεξανδρούπολης
 
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο ΑλεξανδρούποληςSafe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης
Safe Cycling - Εργασία για την ασφαλή ποδηλασία 2ο Γυμνάσιο Αλεξανδρούπολης
 
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία ΜπάρδαΒενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
 

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

  • 1. ∆οµές ∆εδοµένων σε C Μάθηµα 3: Ουρά ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Ουρά 1. Ορισµός Ουράς 2. Βασικές Πράξεις 2. Απλή Ουρά µε Πίνακα 1. Γενικά 2. Υλοποίηση σε C: ∆ηλώσεις 3. Υλοποίηση σε C: Αρχικοποίηση 4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά και Γεµάτη Ουρά 5. Υλοποίηση σε C: Προσθήκη Στοιχείου 6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 7. Υλοποίηση σε C: Παράδειγµα 2∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά 3. Κυκλική Ουρά 1. Γενικά 2. Υλοποίηση σε C: ∆ηλώσεις 3. Υλοποίηση σε C: Αρχικοποίηση 4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά 5. Υλοποίηση σε C: Έλεγχοι – Γεµάτη Ουρά 6. Υλοποίηση σε C: Προσθήκη Στοιχείου 7. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 8. Υλοποίηση σε C: Παράδειγµα Β. Ασκήσεις
  • 3. A. Θεωρία 1. Ουρά 1. Ορισµός Ουράς 3∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η «Ουρά» είναι µια δοµή δεδοµένων µε γραµµική διάταξη στην οποία: • Η προσθήκη (enqueue) ενός στοιχείου, γίνεται στο τέλος της ουράς • Η αποµάκρυνση (dequeue) ενός στοιχείου, γίνεται στην αρχή της ουράς enqueue(2) 2 Παράδειγµα: • Η ουρά των πελατών στο ταµείο µιας τράπεζας! Σηµαντική Ιδιότητα: • Το πρώτο στοιχείο που προστέθηκε στην ουρά είναι το πρώτο που θα εξαχθεί (First In – First Out: FIFO) enqueue(4) 2 4 4 dequeue( ) enqueue(5) 4 enqueue(3) 4 5 5 3
  • 4. A. Θεωρία 1. Ουρά 2. Βασικές Πράξεις 4∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Οι βασικές πράξεις σε µία ουρά είναι: • Αρχικοποίηση της ουράς (init) • Προσθήκη ενός στοιχείου στην ουρά (enqueue) • Αποµάκρυνση ενός στοιχείου από τη ουρά (dequeue) • Έλεγχος αν η ουρά είναι κενή (empty) • Έλεγχος αν η ουρά είναι γεµάτη (full) Υπάρχουν τρεις υλοποιήσεις: • Με στατικό πίνακα (σηµερινό µάθηµα) • Απλή ουρά (µε πίνακα) • Κυκλική ουρά • Με απλά συνδεδεµένη λίστα (επόµενο µάθηµα)
  • 5. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 1. Εισαγωγή 5∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Στην πρώτη υλοποίηση (απλή ουρά) θα χρησιµοποιήσουµε: • Έναν στατικό πίνακα N θέσεων για να αποθηκεύσουµε τα στοιχεία της ουράς • Μία ακέραια µεταβλητή (finish) που θα δείχνει το τέλος της ουράς • (Εννοείται ότι η αρχή της ουράς θα είναι το 0) Γλώσσα C a[0] … a[1] a[2] a[2] a[N-1] finish=2 4 5 34 5 3 Ουρά
  • 6. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 2. Υλοποίηση σε C: ∆ηλώσεις 6∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Οι δηλώσεις σε C είναι οι ακόλουθες: • Η ουρά είναι µία δοµή (struct) µε τα εξής στοιχεία: • Ένας πίνακας µε QUEUE_SIZE στοιχεία • Μία ακέραια µεταβλητή (finish) που δείχνει το τέλος της ουράς µε τιµή: • Από 0…QUEUE_SIZE-1 αν η ουρά έχει τουλάχιστον ένα στοιχείο • -1 αν η ουρά είναι άδεια. #define QUEUE_SIZE 10 /* Megethos pinaka ouras */ typedef int elem; /* typos dedomenwn ouras */ struct queue{ elem array[QUEUE_SIZE]; /* pinakas stoixeiwn */ int finish; /* telos tis ouras */ }; typedef struct queue QUEUE; /* Sinwnimo tis ouras */ … finish=2 2 6 4 Αναπαράσταση: 0 1 2 3 QUEUE_SIZE-1 array
  • 7. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 3. Υλοποίηση σε C: Αρχικοποίηση Ουράς 7∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η αρχικοποίηση γίνεται θέτοντας το τέλος της ουράς ίσο µε -1 /* QU_init(): arxikopoiei tin oura */ void QU_init(QUEUE *q) { q->finish=-1; } … finish=?? ΠΡΙΝ: 0 1 2 3 QUEUE_SIZE-1 array … finish=-1 0 1 2 3 QUEUE_SIZE-1 array ΜΕΤΑ: Προσοχή: • Πάντα προτού ξεκινάµε την χρήση της ουράς θα πρέπει να καλούµε µία φορά αυτήν τη συνάρτηση!
  • 8. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά και Γεµάτη Ουρά 8∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Ο έλεγχος αν η ουρά είναι κενή (αντίστοιχα γεµάτη), γίνεται βλέποντας αν η µεταβλητή finish είναι ίση µε -1 (αντίστοιχα N-1) /* QU_empty(): epistrefei TRUE/FALSE * analoga me to an i oura einai adeia */ int QU_empty(QUEUE q) { return q.finish==-1; } /* QU_full(): epistrefei TRUE/FALSE * analoga me to an i oura einai gemati */ int QU_full(QUEUE q) { return q.finish==QUEUE_SIZE-1; }
  • 9. 5 A. Θεωρία 2. Απλή Ουρά µε Πίνακα 5. Υλοποίηση σε C: Προσθήκη Στοιχείου 9∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η προσθήκη στην ουρά γίνεται προωθώντας το στοιχείο στη θέση finish+1 (εφόσον χωράει στην ουρά) /* QU_enqueue(): Eisagei to x stin oura q * epistrefei TRUE: se periptwsi epitixias * FALSE: se periptwsi apotixias */ int QU_enqueue(QUEUE *q,elem x) { if (QU_full(*q)) return FALSE; else { q->finish++; q->array[q->finish]=x; return TRUE; } } … finish=2 2 6 4 0 1 2 3 QUEUE_SIZE-1 array ΠΡΙΝ: ΜΕΤΑ (π.χ. προσθήκη του «5»): … finish=3 2 6 4 0 1 2 3 QEUEUE_SIZE-1 array
  • 10. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 10∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η αποµάκρυνση (του πρώτου) στοιχείου της ουράς γίνεται ως εξής: 1. Αποθηκεύεται το στοιχείο που είναι στην αρχή της ουράς (για να επιστραφεί) 2. Μετακινούνται τα υπόλοιπα στοιχεία κατά µία θέση αριστερά 3. ∆ιορθώνεται το finish (µειώνεται κατά 1) … finish=2 2 6 4 0 1 2 3 QUEUE_SIZE-1 array ΠΡΙΝ: ΜΕΤΑ: …6 4 0 1 2 3 QUEUE_SIZE-1 array finish=1 *x=2
  • 11. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 11∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά /* QU_dequeue(): Kanei apomakrinsi tou prwtou stoixeiou tis ouras * epistrefei TRUE: se periptwsi epitixias * FALSE: se periptwsi apotixias */ int QU_dequeue(QUEUE *q,elem *x) { int i; if (QU_empty(*q)) return FALSE; else { /* 1. Apothikeysi tou stoixeiou pou eksagetai*/ *x=q->array[0]; /* 2. Aristeri metakinisi twn stoixeiwn kata mia thesi */ for (i=0; i<q->finish; i++) q->array[i]=q->array[i+1]; /* 3. To finish meiwnetai kata 1 */ q->finish--; return TRUE; } }
  • 12. A. Θεωρία 2. Απλή Ουρά µε Πίνακα 7. Υλοποίηση σε C: Παράδειγµα 12∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Μεταγλωττίστε και εκτελέστε το project queue.dev στο οποίο: Το queue.h έχει τα πρωτότυπα των συναρτήσεων και την δήλωση της δοµής Το queue.c έχει τα σώµατα των συναρτήσεων Το main.c έχει ένα πρόγραµµα που επιδεικνύει την χρήση µίας ουράς ακεραίων. «Παίξτε» µε το πρόγραµµα ώστε να γίνει πλήρως κατανοητή η λειτουργία της ουράς. Υπενθύµιση: • Το σπάσιµο ενός προγράµµατος σε επιµέρους αρχεία µελετήθηκε στο «Γλώσσα C – Μάθηµα 14: Εµβέλεια Μεταβλητών»
  • 13. A. Θεωρία 3. Κυκλική Ουρά 1. Η ανάγκη για την Κυκλική Ουρά 13∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η πράξη της αποµάκρυνσης απαιτεί την µετακίνηση των στοιχείων της ουράς κατά µία θέση αριστερά, το οποίο κρίνεται µη αποδοτικό. Μπορούµε να επιτύχουµε βελτίωση στο χρόνο αν βάλουµε άλλη µία µεταβλητή που να δείχνει την αρχή της ουράς και να έχουµε ως όρια της ουράς αυτές τις δύο µεταβλητές (χωρίς να κάνουµε µετακίνηση των στοιχείων της ουράς). Για παράδειγµα: enqueue(2) 2 enqueue(4) 2 4 4 dequeue( ) enqueue(5) 4 enqueue(3) 4 5 5 3 start=0 finish=0 start=0 finish=1 start=1 finish=1 start=1 finish=2 start=1 finish=3 start=-1 finish=-1
  • 14. A. Θεωρία 3. Κυκλική Ουρά 1. Η ανάγκη για την Κυκλική Ουρά 14∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Για να ξεπεραστεί το (νέο) πρόβληµα, ότι κάποια στιγµή θα φτάσουµε στο τέλος του πίνακα (οπότε και δεν θα µπορούµε να εισάγουµε ένα νέο στοιχείο στον πίνακα) Εισάγεται η έννοια της κυκλικής ουράς! Όπου πλέον όταν φτάσουµε στο τέλος του πίνακα οι νέες εισαγωγές θα γίνονται στην αρχή του πίνακα ∆ηλαδή βλέπουµε τον πίνακα ως κύκλο (όπου η επόµενη θέση της Ν-1 είναι η 0) 4 5 3 start=1 finish=3 0 1 2 3 array 4 5 6 7 0 array 1 2 34 5 6 7 start=1 finish=3 2 61 start=6finish=0 0 1 2 3 array 4 5 6 7 0 array 1 2 34 5 6 7start=6 finish=1 4 5 3 2 6 1
  • 15. A. Θεωρία 3. Κυκλική Ουρά 2. Υλοποίηση σε C: ∆ηλώσεις 15∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Οι δηλώσεις σε C είναι οι ακόλουθες: • Η ουρά είναι µία δοµή (struct) µε τα εξής στοιχεία: • Ένας πίνακας µε QUEUE_SIZE στοιχεία • ∆ύο ακέραιες µεταβλητές (start και finish) που δείχνουν αντίστοιχα την αρχή και το τέλος της ουράς µε τιµές (µε start=finish=-1 αν η ουρά είναι άδεια). #define QUEUE_SIZE 10 /* Megethos pinaka ouras */ typedef int elem; /* typos dedomenwn ouras */ struct queue{ elem array[QUEUE_SIZE]; /* pinakas stoixeiwn */ int start; /* arxi tis ouras */ int finish; /* telos tis ouras */ }; typedef struct queue QUEUE; /* Sinwnimo tis ouras */ Αναπαράσταση: 0 array 1 2 34 5 6 7 start=1 finish=3 4 5 3
  • 16. A. Θεωρία 3. Κυκλική Ουρά 3. Υλοποίηση σε C: Αρχικοποίηση Ουράς 16∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η αρχικοποίηση γίνεται θέτοντας την αρχή και το τέλος της ουράς ίσο µε -1 /* QU_init(): arxikopoiei tin oura */ void QU_init(QUEUE *q) { q->start =-1; q->finish=-1; } ΠΡΙΝ: ΜΕΤΑ: 0 array 1 2 34 5 6 7 QUEUE_SIZE=8 start=?? finish=?? 0 array 1 2 34 5 6 7 QUEUE_SIZE=8 start=-1 finish=-1
  • 17. A. Θεωρία 3. Κυκλική Ουρά 4. Υλοποίηση σε C: Έλεγχοι – Κενή Ουρά 17∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Ο έλεγχος αν η ουρά είναι κενή γίνεται βλέποντας αν η µεταβλητή start (και η µεταβλητή finish) είναι ίση µε -1 • Αρκεί να ελέγξουµε τη µία από τις δύο (αφού µεριµνάµε ότι η υλοποίηση των βασικών πράξεων είναι ορθή και αυτός που χρησιµοποιεί την ουρά δεν έχει πρόσβαση στην υλοποίηση) /* QU_empty(): epistrefei TRUE/FALSE * analoga me to an i oura einai adeia */ int QU_empty(QUEUE q) { return q.finish==-1; }
  • 18. A. Θεωρία 3. Κυκλική Ουρά 5. Υλοποίηση σε C: Έλεγχοι – Γεµάτη Ουρά 18∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Ο έλεγχος αν η ουρά είναι γεµάτη γίνεται βλέποντας αν η µεταβλητή finish έχει τιµή 1 λιγότερο από τη µεταβλητή start (δηλαδή start==finish+1) • Μόνο στην περίπτωση που finish=QUEUE_SIZE-1 τότε πρέπει να ελέγξουµε αν start==0 Αυτό µπορεί να γίνει µε τον παρακάτω κοµψό κώδικα: /* QU_full(): epistrefei TRUE/FALSE * analoga me to an i oura einai gemati */ int QU_full(QUEUE q) { return q.start==(q.finish+1)%QUEUE_SIZE; } Υπενθύµιση: • Ο τελεστής % επιστρέφει το υπόλοιπο της διαίρεσης δύο αριθµών (Γλώσσα C – Μάθηµα 4). • Εδώ τον χρησιµοποιούµε ώστε µε µία εντολή να προκύπτει το start είτε ίσο µε την επόµενη θέση, είτε ίσο µε 0.
  • 19. A. Θεωρία 3. Κυκλική Ουρά 6. Υλοποίηση σε C: Προσθήκη Στοιχείου 19∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η προσθήκη ενός στοιχείου στην ουρά γίνεται (εφόσον αυτή δεν είναι γεµάτη) ως εξής: • Το finish παίρνει τιµή την επόµενη θέση του πίνακα: • Την τιµή finish+1 (αν το finish < QUEUE_SIZE-1) • Την τιµή 0 (αν το finish = QUEUE_SIZE-1) • Το στοιχείο αποθηκεύεται στην θέση finish. ΠΡΙΝ: 0 array 1 2 34 5 6 7 start=1 finish=3 4 5 3 0 array 1 2 34 5 6 7 start=1 4 5 35 finish=4 QUEUE_SIZE=8 QUEUE_SIZE=8 5 ΜΕΤΑ (π.χ. προσθήκη του «5»):
  • 20. A. Θεωρία 3. Κυκλική Ουρά 6. Υλοποίηση σε C: Προσθήκη Στοιχείου 20∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά /* QU_enqueue(): Eisagei to x stin oura q * epistrefei TRUE: se periptwsi epitixias * FALSE: se periptwsi apotixias */ int QU_enqueue(QUEUE *q,elem x) { if (QU_full(*q)) return FALSE; else { if (QU_empty(*q)) { q->start=0; q->finish=0; } else { q->finish=(q->finish+1)%QUEUE_SIZE; } q->array[q->finish]=x; return TRUE; } }
  • 21. start=1 A. Θεωρία 3. Κυκλική Ουρά 6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 21∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Η αποµάκρυνση (του πρώτου) στοιχείου από την ουρά γίνεται (εφόσον αυτή δεν είναι άδεια): • Αποθηκεύοντας το στοιχείο της θέσης start (ώστε να επιστραφεί) και: • Αν το start είναι < από QUEUE_SIZE-1, τότε θέτουµε start=start+1 • Αν το start είναι = µε QUEUE_SIZE-1 τότε θέτουµε start=0 ΠΡΙΝ: 0 array 1 2 34 5 6 7 start=1 finish=3 4 5 3 0 array 1 2 34 5 6 7 5 3 QUEUE_SIZE=8 QUEUE_SIZE=8 5 ΜΕΤΑ *x=4 finish=3
  • 22. A. Θεωρία 3. Κυκλική Ουρά 6. Υλοποίηση σε C: Αποµάκρυνση Στοιχείου 22∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά /* QU_dequeue(): Kanei apomakrinsi tou prwtou stoixeiou tis ouras * epistrefei TRUE: se periptwsi epitixias * FALSE: se periptwsi apotixias */ int QU_dequeue(QUEUE *q,elem *x) { if (QU_empty(*q)) return FALSE; else { *x=q->array[q->start]; if (q->start == q->finish) /* H oura adeiase */ { q->start=-1; q->finish=-1; } else { q->start=(q->start+1)%QUEUE_SIZE; } return TRUE; } }
  • 23. A. Θεωρία 3. Κυκλική Ουρά 7. Υλοποίηση σε C: Παράδειγµα 23∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά Μεταγλωττίστε και εκτελέστε το project circular_queue.dev στο οποίο: Το queue.h έχει τα πρωτότυπα των συναρτήσεων και την δήλωση της δοµής Το queue.c έχει τα σώµατα των συναρτήσεων Το main.c έχει ένα πρόγραµµα που επιδεικνύει την χρήση µίας ουράς ακεραίων. «Παίξτε» µε το πρόγραµµα ώστε να γίνει πλήρως κατανοητή η λειτουργία της ουράς.
  • 24. Β. Ασκήσεις Εφαρµογή 1: Ταµεία Τράπεζας ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά 24 Κατασκευάστε ένα πρόγραµµα το οποίο θα προσοµοιώνει τη λειτουργία µιας τράπεζας µε δύο ταµεία Κάθε ταµείο (από τα δύο) θα είναι µια ουρά συµβολοσειρών 80 χαρακτήρων. Κάθε ουρά θα χωράει το πολύ 5 πελάτες. Στην συµβολοσειρά θα αποθηκεύεται το επώνυµο του πελάτη. Το κυρίως πρόγραµµα θα υλοποιεί τις εξής ενέργειες (µέσα από ένα µενού επιλογών): Άφιξη Πελάτη. Θα διαβάζεται από την είσοδο το επώνυµο του πελάτη και έπειτα: Αν «χωράει» στην πρώτη ουρά, τότε θα τοποθετείται σε αυτήν, αλλιώς θα τοποθετείται στην δεύτερη ουρά. Αν δεν χωράει σε καµία ουρά, τότε ο πελάτης δεν θα γίνεται δεκτός. Αναχώρηση Πελάτη. Θα επιλέγεται τυχαία ένα ταµείο που έχει πελάτη και θα αποµακρύνεται ο 1ος πελάτης του ταµείου. Στην οθόνη θα τυπώνεται το επώνυµό του και το ταµείο από το οποίο εξυπηρετήθηκε. Τέλος Προγράµµατος. Θα γίνεται εφικτή, µόνο αν και τα δύο ταµεία είναι άδεια. Σε αντίθετη περίπτωση θα βγάζει µήνυµα για το ποια ταµεία έχουν ακόµη πελάτη. Υπόδειξη: • ∆εδοµένου ότι η κυκλική ουρά είναι «πιο γρήγορη» συνίσταται χρησιµοποιήσετε αυτή, αντί για την απλή ουρά.
  • 25. Β. Ασκήσεις Εφαρµογή 2: Ουρά Προτεραιότητας ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά 25 Η ουρά προτεραιότητας είναι µία δοµή δεδοµένων, όπου κάθε στοιχείο που πρόκειται να εισαχθεί στην ουρά έχει και έναν πρόσθετο ακέραιο αριθµό που καθορίζει την προτεραιότητά του (όσο µεγαλύτερη η τιµή του αριθµού, τόσο µεγαλύτερη και η προτεραιότητα). Ένας τρόπος για να υλοποιήσουµε την δοµή δεδοµένων «Ουρά Προτεραιότητας» είναι: Να τοποθετήσουµε έναν ακόµη ακέραιο αριθµό στο στοιχείο της δοµής που καθορίζει την προτεραιότητα. Η εισαγωγή του στοιχείου να γίνεται στην σωστή θέση της ουράς (µε βάση την προτεραιότητα) Κατασκευάστε ένα πρόγραµµα επίδειξης της λειτουργίας της ουράς προτεραιότητας, τροποποιώντας κατάλληλα το project που κατασκευάσαµε για την κυκλική ουρά. Υπόδειξη: • ∆εδοµένου ότι η κυκλική ουρά είναι «πιο γρήγορη» συνίσταται χρησιµοποιήσετε αυτή, αντί για την απλή ουρά.
  • 26. Β. Ασκήσεις Εφαρµογή 3: Εκτύπωση Στοιχείων Ουράς ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά 26 Θεωρείστε την κυκλική ουρά ακεραίων που κατασκευάσαµε στο µάθηµα. Θέλουµε να κατασκευάσουµε την δευτερεύουσα πράξη H οποία θα τυπώνει τα στοιχεία της ουράς. Επεκτείνετε το project που κατασκευάσαµε για την κυκλική ουρά ώστε να ενσωµατώνει και αυτήν τη συνάρτηση. Η συνάρτηση αυτή πρέπει να δηλωθεί στην main, καθώς θεωρείται δευτερεύουσα πράξη. Προσοχή όµως! Η συνάρτηση αυτή θεωρείται δευτερεύουσα οπότε ∆ΕΝ πρέπει να έχει πρόσβαση στα µέλη της δοµής. Υπόδειξη: Μπορείτε όµως να ορίσετε βοηθητικές δοµές (όπως π.χ. µία προσωρινή ουρά) Στο κυρίως πρόγραµµα και συγκεκριµένα, στην επιλογή για την εκτύπωση της ουράς, να καλείται αυτή η συνάρτηση. void QU_print(QUEUE *q)
  • 27. Β. Ασκήσεις Εφαρµογή 4: Αντιστροφή Ουράς ∆ηµήτρης Ψούνης, ∆οµές ∆εδοµένων σε C, Μάθηµα 3: Ουρά 27 Επεκτείνετε το project της εφαρµογής 3, έτσι ώστε να ορίζεται και η εξής δευτερεύουσα πράξη στις δηλώσεις της ουράς: Η συνάρτηση αυτή θα αντιστρέφει τα στοιχεία της ουράς (το πρώτο στοιχείο να γίνεται τελευταίο, το δεύτερο προτελευταίο, κ.οκ.) Συνίσταται να χρησιµοποιήσετε µία στοίβα! void QU_reverse(QUEUE *q)