Δομές Δεδομένων και Αρχεία Ενότητα 8: Η δομή Ουρά Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Advertisements

Διδακτική Πληροφορικής
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Δομές Δεδομένων και Αρχεία Ενότητα 2: Αρχεία Δομών I (Binary Files) Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
Δομές Δεδομένων και Αρχεία Ενότητα 4: Ευρετηριασμένα Αρχεία Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Δομές Δεδομένων και Αρχεία
Δομές Δεδομένων και Αρχεία Ενότητα 3: Αρχεία Δομών ΙΙ Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Υδραυλικά & Πνευματικά ΣΑΕ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Ανθρωπολογία του Θεάτρου Ενότητα 4 η : Βασικές αρχές της Τέχνης του Ηθοποιού Γιώργος Σαμπατακάκης, M.Phil. (Καίμπρητζ) – Ph.D. (Λονδίνο) Τμήμα Θεατρικών.
Τεχνολογία Ξύλου 1 Ενότητα 13: Ποιότητα και Πιστοποίηση Ξυλείας Διδάσκων: Δρ. Μιχάλης Σκαρβέλης, Αναπληρωτής Καθηγητής. Τμήμα Σχεδιασμού και Τεχνολογίας.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Στοιχεία Μηχανών ΙΙ Ενότητα 3: Μετωπικοί τροχοί με κεκλιμένη οδόντωση – Κωνικοί οδοντωτοί τροχοί Δρ Α. Δ. Τσολάκης Τμήμα Μηχανολόγων Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 12: Οδηγίες δημιουργίας φυτολογίου Γρηγόριος Βάρρας Αν. Καθηγητής Άρτα,
Ενότητα 7 : Χρήση Πινάκων στο Ηλεκτρονικό εμπόριο (I) Ιωάννης Τσούλος
Τεχνολογία και Προγραμματισμός Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός Ι
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
Λειτουργικά Συστήματα
Τεχνολογία και Προγραμματισμός Υπολογιστών
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
Ενότητα # 8: ΡΕΑΛΙΣΜΟΣ Αιλιάνα Μαρτίνη Τμήμα Ιστορίας
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΦΡΟΝΤΙΣΤΗΡΙΟ: ΘΕΡΜΙΚΕΣ ΤΑΣΕΙΣ
Στοιχεία Μηχανών ΙΙ Ενότητα 4: Πλανητικοί Μηχανισμοί Δρ Α. Δ. Τσολάκης
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΛΕΠΤΟΤΟΙΧΑ
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
Συστήματα Αυτομάτου Ελέγχου II
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ: ΔΙΚΤΥΩΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ηλεκτρικές Μηχανές ΙΙ Ενότητα 5: Κανονικοποιημένες Καμπύλες
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(4)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΕνΟτητα # 8: Ms Word V CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(10)
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Μεταγράφημα παρουσίασης:

Δομές Δεδομένων και Αρχεία Ενότητα 8: Η δομή Ουρά Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Ο Αναγνώστης να μπορεί να:  Διαχειρίζεται πλήρως την δομή της ουράς, δηλαδή δημιουργία, εισαγωγή και εξαγωγή στοιχείων. Η δομή Ουρά 4

Περιεχόμενα ενότητας  Ουρά (Queue): Ουρά (Queue):  Ανάλυση, Ανάλυση,  Υλοποίηση, Υλοποίηση,  Εφαρμογές. Εφαρμογές. Η δομή Ουρά 5

Ουρά (Queue)  Γραμμική δομή δεδομένων η οποία λειτουργεί με τον μηχανισμό First In First Out (FIFO) – ότι εισέρχεται πρώτο εξάγεται πρώτο (διαγραφή – εξυπηρέτηση).  Δύο λειτουργίες:  Εισαγωγή στοιχείου,  Εξαγωγή (διαγραφή) στοιχείου. Αναπαράσταση Ουράς Πηγή: Wikipedia Η δομή Ουρά 6

Λίγη ιστορία  1946: Η δομή εμφανίστηκε για πρώτη φορά από τον Alan M. Turing για να αναπαραστήσει την κλήση συναρτήσεων,  1957: Οι Γερμανοί Klaus Samelson και Friedrich L. Bauer πατενταρίσανε την ιδέα ενώ τον ίδιο χρόνο αναπτύχθηκε και από τον Αυστραλιανό Charles Leonard Hamblin. Η δομή Ουρά 7

Λειτουργίες: Εισόδου / Εξόδου Η δομή Ουρά 8 Εισαγωγή Α Β Α Γ Β Α Εξαγωγή Β Α Γ Εισαγωγή Δ Γ Β Εξαγωγή Γ Β Δ Πίσω Εμπρός

Αναπαράσταση Ουράς  Πίνακας,  Αρχείο. Η δομή Ουρά 9

Πίνακας Ουρά (1 από 2)  Πίνακας δομών (κάθε στοιχείο του πίνακα αναπαριστά ένα στοιχείο της ουράς),  Κάθε στοιχείο εισάγεται σαν τελευταίο του πίνακα, ενώ,  Κάθε στοιχείο που διαγράφεται (εξάγεται), διαγράφεται από την ‘αρχή’ πάλι του πίνακα.  Επομένως:  Πρέπει να είναι γνωστός οι δείκτες αρχής, τέλους αλλά και το πλήθος των στοιχείων. Η δομή Ουρά 10

Πίνακας Ουρά (2 από 2)  Και τι γίνεται εάν το τέλος πλησιάζει να φτάσει το τέλος του πίνακα ενώ η αρχή έχει επίσης προχωρήσει;  Συνέχιση του δείκτη τέλους από το πρώτο στοιχείο του πίνακα (κυκλική ουρά).  Επομένως πρέπει να γίνεται συνέχεια έλεγχος ‘πλήρους’ ουράς.  Μειονέκτημα (;): Το μέγεθος του πίνακα. Η δομή Ουρά 11

Κυκλική Ουρά Η δομή Ουρά 12 ABC Αρχή Τέλος BC Αρχή Τέλος BCDE Αρχή Τέλος IJCDEFGH Αρχή Τέλος Εξαγωγή

Ουρά σαν Πίνακας typedef struct { float o[N]; int arxi, telos, plithos;} Queue; o[N]  H ουρά (θα μπορούσε να είναι πίνακας δομής αντί για float) αρχή  Δείκτης Αρχής της Ουράς στον πίνακα, τέλος  Δείκτης Τέλους της Ουράς στον πίνακα, πλήθος  Πλήθος στοιχείων της Ουράς Η δομή Ουρά 13

Απαιτούμενες Λειτουργίες  Δημιουργία Ουράς,  Έλεγχος Κενής/Πλήρους Ουράς,  Εισαγωγή Στοιχείου στην Ουρά,  Εξαγωγή/Διαγραφή από την Ουρά. Η δομή Ουρά 14

Υλοποίηση Ουράς: Δηλώσεις #define N 10 typedef struct { float o[N]; int arxi, telos, plithos;} Oura; void dimiourgia(Oura *); int keni(Oura); int pliris(Oura); void eisagogi(Oura *, float); float diagrafi(Oura *); Η δομή Ουρά 15

Υλοποίηση Ουράς: main() (1 από 2) int main() { Oura O; float x; int epil; dimiourgia(&O); do { printf("\n\n 1. Εισαγωγή, 2. Εξαγωγή, 3. Τέλος : "); scanf("%d",&epil); } while (epil 3); Η δομή Ουρά 16

Υλοποίηση Ουράς: main() (2 από 2) switch (epil) { case 1: if (pliris(O) == 1) printf("\n\n Η ουρά είναι πλήρης!! "); else { printf("\n\nΕισαγωγή αριθμού: "); scanf("%f", &x); eisagogi(&O, x); } break; case 2: if (keni(O) == -1) printf("\n\n Η ουρά είναι κενή!! "); else { x = diagrafi(&O); printf("\n Διαγάφηκε ==> %10.2f", x); } Η δομή Ουρά 17

Δημιουργία Ουράς void dimiourgia(Oura *oura) { oura->arxi =-1 ; oura->telos = -1; oura-> plithos = 0; } Η δομή Ουρά 18

Έλεγχος Κενής/Πλήρους Ουράς int keni(Oura oura) { if (oura.plithos == 0) return -1; else return 0; } int pliris(Oura oura) { if (oura.plithos == N) return 1; else return 0; } Η δομή Ουρά 19

Εισαγωγή Στοιχείου στην Ουρά void eisagogi(Oura *oura, float a) { oura->telos ++; if (oura->telos == N) oura->telos = 0; oura->o[oura->telos] = a; oura->plithos ++; } Η δομή Ουρά 20

Εξαγωγή/Διαγραφή από την Ουρά float diagrafi(Oura *oura) { float a; a = oura->o[oura->arxi]; oura->arxi ++; if (oura->arxi == N) oura->arxi = 0; oura->plithos --; return a; } Η δομή Ουρά 21

Υλοποίηση Ουράς με Αρχείο  Διαφέρει με τον πίνακα κυρίως στο ότι δεν έχει σαφές μέγεθος.  ΠΡΕΠΕΙ να είναι πάλι γνωστή η αρχή/τέλος της ουράς!  Δευτερεύον αρχείο με περιεχόμενο ΔΥΟ αριθμών οι οποίοι θα δείχνουν την αρχή και το τέλος της ουράς..  Σε κάθε εισαγωγή/εξαγωγή πρέπει να ενημερώνεται το τέλος /αρχή,  Κατά την δημιουργία, αρχή, και τέλος  -1. Η δομή Ουρά 22

Άσκηση  Να γραφεί πρόγραμμα το οποίο με χρήση αρχείου να διαχειρίζεται μία ουρά Ευκλειδείων συντεταγμένων. Η δομή Ουρά 23

Ουρά: υλοποίηση με αρχείο (1 από 13) #include typedef struct { float x; float y; } Oura; FILE *q, *tq, *temp; /* q->Αρχεία ουράς και tq, temp -> βοηθητικά */ void dimiourgia(void); int keni(void); void eisagogi(Oura); Oura eksagogi(void); void anasygkrotisi(void); Η δομή Ουρά 24

Ουρά: υλοποίηση με αρχείο (2 από 13) int main() { Oura O; float x1,x2; int epil; dimiourgia(); do { printf("\n 1. Εισαγωγή, 2. Εξαγωγή, 3. Ανασυγκρότηση, 4.Τέλος : "); scanf("%d", &epil); } while (epil 4); Η δομή Ουρά 25

Ουρά: υλοποίηση με αρχείο (3 από 13) switch (epil) { case 1: printf("\n Εισαγωγή συντεταγμένων (x1, x2): "); scanf("%f%f", &x1, &x2); O.x = x1; O.y = x2; eisagogi(O); break; case 2: if ( keni() == -1 ) printf("\n\nH ουρά είναι κενή! "); else { O = eksagogi(); printf("\n\n==> %10.2f %10.2f", O.x, O.y); } break; case 3: anasygkrotisi(); } } while (epil != 4); Η δομή Ουρά 26

Ουρά: υλοποίηση με αρχείο (4 από 13) void dimiourgia(void) { tq = fopen("ArxiTelos.txt", "r"); if ( ! tq ) { tq = fopen("ArxiTelos.txt", "w"); fprintf(tq, "%10d %10d", -1, -1); q = fopen("Oura.dat", "wb"); fclose(q); } fclose(tq); } Η δομή Ουρά 27

Ουρά: υλοποίηση με αρχείο (5 από 13) int keni(void) { int arxi, telos; tq = fopen("ArxiTelos.txt", "r"); fscanf(tq, "%d%d", &arxi, &telos); fclose(tq); if (telos==-1 || arxi>telos) return -1; else return 0; } Η δομή Ουρά 28

Ουρά: υλοποίηση με αρχείο (6 από 13) void eisagogi(Oura a) { int arxi, telos; tq = fopen("ArxiTelos.txt", "r"); fscanf(tq, "%d%d", &arxi, &telos); fclose(tq); telos++; tq = fopen("ArxiTelos.txt", "w"); if ( arxi == -1) arxi = 0; fprintf(tq, "%10d %10d", arxi, telos); Η δομή Ουρά 29

Ουρά: υλοποίηση με αρχείο (7 από 13) q = fopen("Oura.dat", "rb+"); fseek(q, telos*sizeof(Oura), SEEK_SET); fwrite(&a, sizeof(Oura), 1, q); fclose(q); fclose(tq); } Η δομή Ουρά 30

Ουρά: υλοποίηση με αρχείο (8 από 13) Oura eksagogi(void) { int arxi, telos; Oura a; tq = fopen("ArxiTelos.txt", "r"); fscanf(tq, "%d%d", &arxi, &telos); q = fopen("Oura.dat", "rb"); fseek(q, arxi*sizeof(Oura), SEEK_SET); fread(&a, sizeof(Oura), 1, q); arxi++; fclose(tq); Η δομή Ουρά 31

Ουρά: υλοποίηση με αρχείο (9 από 13) tq = fopen("ArxiTelos.txt", "w"); fprintf(tq, "%10d %10d", arxi, telos); fclose(q); fclose(tq); return a; } Η δομή Ουρά 32

Ουρά: υλοποίηση με αρχείο (10 από 13) void anasygkrotisi(void) { Oura a; int arxi, telos; tq = fopen("ArxiTelos.txt", "r"); if (! tq) return; fscanf(tq, "%d%d", &arxi, &telos); fclose(tq); telos = -1; Η δομή Ουρά 33

Ουρά: υλοποίηση με αρχείο (11 από 13) if (arxi != -1 || arxi <=telos) { q = fopen("Oura.dat", "rb"); temp = fopen("temp.dat", "wb"); fseek(q, arxi*sizeof(Oura), SEEK_SET); while (! feof(q)) { fread(&a, sizeof(Oura), 1, q); if ( ! feof(q) ) { fwrite(&a, sizeof(Oura), 1, temp); telos ++; } Η δομή Ουρά 34

Ουρά: υλοποίηση με αρχείο (12 από 13) fclose(temp); fclose(q); tq = fopen("ArxiTelos.txt", "w"); arxi = 0; fprintf(tq, "%10d %10d", arxi, telos); fclose(tq); system("del Oura.dat"); system("ren temp.dat Oura.dat"); } Η δομή Ουρά 35

Ουρά: υλοποίηση με αρχείο (13 από 13)  Πλεονεκτήματα σε σχέση με την υλοποίηση με πίνακα?  Δεν έχει προκαθορισμένο τέλος!  Εάν τερματισθεί το πρόγραμμα δεν χάνεται καμία πληροφορία!!! Η δομή Ουρά 36

Ουρά: Εφαρμογές  Πληροφορική,  Μεταφορές,  Επιχειρησιακή Έρευνα,  … Η δομή Ουρά 37

Τέλος Ενότητας