Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομές δεδομένων => Μήνυμα ξεκίνησε από: iordanissav στις 24 Μαρ 2011, 12:06:14 ΜΜ

Τίτλος: Έτσι μεταξύ μας... για τις κυκλικές ουρές.
Αποστολή από: iordanissav στις 24 Μαρ 2011, 12:06:14 ΜΜ
ΟΚ, εκτός ύλης για ασκήσεις, αλλά μιας και διόρθωσα κάποια δικά μου animations σε PPT, για το πώς λειτουργούν οι ουρές, θυμήθηκα τις συζητήσεις/αντιπαραθέσεις στο στέκι, για αλγόριθμους λειτουργίας συγκεκριμένα των κυκλικών ουρών.  Δεν θυμάμαι το όνομα του συναδέλφου που έστειλε το post με τους αλγόριθμους αυτούς αλλά νομίζω ότι χρειάζονται κάποιες διορθώσεις, τις οποίες και παραθέτω στη συνέχεια :

============================
ουρά: ο ίδιος ο πίνακας
στοιχείο: το στοιχείο που εισάγουμε/εξάγουμε
front/rear : αρχή/τέλος ουράς
Ν : διάσταση πίνακα
CanGet : Αν μπορεί να γίνει εξαγωγή στοιχείου από την ουρά
status : η λειτουργία ολοκληρώθηκε σωστά
============================
Αλγόριθμος Εισαγωγή_κυκλική_ουρά
  Δεδομένα //ουρά,Ν,front,rear,στοιχείο//

  Αν (rear mod Ν) + 1 = front τότε
      status <- ψευδής
  Αλλιώς
      rear <- (rear mod Ν) + 1
      ουρά [rear] <- στοιχείο
      status <- αληθής
  Τέλος_αν

  ! από τη στιγμή που κάναμε εισαγωγή, σημαίνει ότι
  ! μπορούμε να κάνουμε και εξαγωγή
  CanGet <- αληθής

  Αποτελέσματα // ουρά, rear, status, CanGet //
Τέλος Εισαγωγή_κυκλική_ουρά
========================
Αλγόριθμος Εξαγωγή_κυκλική_ουρά
  Δεδομένα //ουρά,Ν,front,rear,CanGet//

  Αν CanGet = ψευδής τότε
      status <- ψευδής
  αλλιώς
      στοιχείο <-  ουρά [front]   ! πάρε από τη θέση front

      ! αν έχουμε μόνο ένα στοιχείο (front=rear) και το εξάγουμε, δεν μπορούμε να
      ! κάνουμε άλλη εξαγωγή, αν δεν εισάγουμε κάποιο άλλο πρώτα
      Αν front = rear τότε   
           CanGet <- ψευδής
      Τέλος_αν

      ! αύξησε την front. Αν μάλιστα ίσχυε front=rear (παραπάνω),
      ! τότε η front προσπερνά τη rear, οπότε η ουρά έχει αδειάσει
      front <- (front mod Ν) + 1

      ! από τη στιγμή που εξάγουμε το στοιχείο, status=OK
      status <- αληθής
Τέλος_αν
       
  Αποτελέσματα //ουρά,rear,status, στοιχείο, CanGet//
Τέλος Εξαγωγή_κυκλική_ουρά


Για όσους ενδιαφέρονται...
ΙΟΡΔΑΝΗΣ ΣΑΒΒΟΥΛΙΔΗΣ
http://users.sch.gr/iordanissav (http://users.sch.gr/iordanissav)