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 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;
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;