Schlangen (3)


Zum Eintragen eines neuen Datenelements am Schwanz der Schlange hängen wir es hinten an den belegten Teil des Array an; und ebenso holen wir uns vorne das aktuelle Kopf-Element ab. Würden wir dabei über das Ende des Array hinauslaufen, so kommen wir von vorne wieder herein:
Schlangen im Array
PROCEDURE enqueue(x: atom; VAR q: queue);
BEGIN WITH q^
      DO IF tl = max THEN tl := 1
         ELSE tl := tl + 1
         END; 
         store[tl] := x; l := l + 1;
      END;
END enqueue;

PROCEDURE dequeue(VAR y: atom; VAR q: queue);
BEGIN WITH q^
      DO y := store[hd]; l := l - 1;
         IF hd = max THEN hd := 1
         ELSE hd := hd + 1
         END; 
      END;
END dequeue;
Statt der IF-Abfrage hätten wir auch mit der MOD-Funktion arbeiten können, und hätten uns dabei vermutlich erst einmal verrechnet. Die hier gegebene Lösung ist so primitiv, daß ihre Korrektheit unmittelbar einsichtig ist; daher ist sie unbedingt vorzuziehen (schneller ist sie außerdem auch noch!)


zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36