Αποστολέας Θέμα: Έτσι μεταξύ μας... για τις κυκλικές ουρές.  (Αναγνώστηκε 1172 φορές)

iordanissav

  • Οπαδός
  • **
  • Μηνύματα: 16
    • Προσωπικός ιστότοπος
Έτσι μεταξύ μας... για τις κυκλικές ουρές.
« στις: 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
« Τελευταία τροποποίηση: 24 Μάρ 2011, 12:17:08 μμ από iordanissav »