PROCEDURE enqueue(x: atom; VAR q: queue);
VAR p: liste;
BEGIN WITH q^
DO NEW(p); p^.wert := x; p^.nach := NIL;
IF hd = NIL THEN hd := p ELSE tl^.nach := p
END;
tl := p; l := l + 1;
END;
END enqueue;
Beim Austragen aus einer (nichtleeren) Schlange
hängen wir das Kopfelement ab;
ist die Schlange dann leer geworden,
so hat sie auch keinen Schwanz mehr!
PROCEDURE dequeue(VAR y: atom; VAR q: queue);
VAR p: liste;
BEGIN WITH q^
DO p := hd; y := p^.wert; hd := p^.nach;
IF hd = NIL THEN tl := NIL
END;
DISPOSE(p); l := l - 1;
END;
END dequeue;