Διευκρίνηση για Ουρές - Προχωρημένη διόρθωση
- Τρίτη 3 Δεκεμβρίου 2024 - 1:39 μ.μ. -

Σύμφωνα και με ερώτηση στο μάθημα, είδαμε ότι όταν αδειάζει η ουρά τα πρώτα στοιχεία που αδειάζουν μένουν κενά. Παρακάτω ακολουθεί υλοποίηση που μειώνει κάθε φορά και το Rear.

https://alkisg.mysch.gr/steki/index.php?topic=9085.0

 

ΕΙΣΑΓΩΓΗ:

Αν rear = n τότε
  Γράψε "Γεμάτη ουρά"
αλλιώς
  rear <- rear + 1
  Διάβασε ουρά[rear]
τέλος_αν

ΕΞΑΓΩΓΗ:

Αν rear = 0 τότε
  Γράψε "Άδεια ουρά"
αλλιώς
  Γράψε "Εξάγεται το ",ουρά[1]
  Για i από 1 μέχρι rear - 1 ! Ολίσθηση στοιχείων της ουράς στις πρώτες θέσεις, όπως σε μία πραγματική κατάσταση ουράς
    ουρά <- ουρά[i+1]
  τέλος_επανάληψης
  rear <- rear - 1
τέλος_αν

Όντως και σύμφωνα με το discussion -> "Το ζήτημα είναι ότι έτσι αυξάνεται η πολυπλοκότητα σε μια εξαγωγή γιατί έχεις να κάνεις ολισθήσεις. Η λύση που χρησιμοποιείται σε μια στατική υλοποίηση (με πίνακα δηλαδή) είναι αυτή της κυκλικής ουράς. Δηλαδή μόλις φτάσει στο τέλος του πίνακα το επόμενο στοιχείο μπαίνει από μπροστά. Ουσιαστικά θα πρέπει να οριστεί η κίνηση των δεικτών και να βρεις για κάθε θέση ποια είναι η επόμενη.

Επίσης στην πραγματική ζωή (πχ στο ταμείο) κάνουν όταν βγαίνει ένας από την ουρά, κάνουν ΟΛΟΙ από ένα βήμα μπρος (είναι ας πούμε κάτι σαν παράλληλη επεξεργασία) ενώ εδώ τα κάνει όλα ο ίδιος."

 

Οπότε ισχύει ότι ο προκαθορισμένος κανόνας της ουράς με το μόνο να αλλάζει ο δείκτης είναι η ορθή υλοποίηση. Ωστόσο πάντα ανάλογα το πρόβλημα μπορεί να υπάρξει βελτιωμένη υλοποίηση. Για την 3η λυκείου δεν μας ενδιαφέρει η "βελτιωμένη" έκδοση. Ωστόσο όντως μπορεί να γίνει ερώτηση και από μαθητή.