Warteschlangen auf Basis von verzeigerten Elementen II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Requests2.om
PROCEDURE InitQueue(VAR queue: QueueOfRequests);
BEGIN
   queue.length := 0; queue.head := NIL; queue.tail := NIL;
END InitQueue;

PROCEDURE AddRequest(VAR queue: QueueOfRequests;
                     request: Request);
   VAR
      element: Element;
BEGIN
   NEW(element); element.request := request;
   element.next := NIL;
   IF queue.head = NIL THEN
      queue.head := element;
   ELSE (* queue.tail # NIL *)
      queue.tail.next := element;
   END;
   queue.tail := element;
   INC(queue.length);
END AddRequest;

*Es gilt die Invariante: Entweder sind sowohl queue.head und queue.tail gleich NIL oder beide ungleich NIL.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999