component GenericQueue ( Queue, Element ); type Queue; Queue (MaxLength = integer) -> Queue; Length( Queue ) -> integer; Empty ( Queue ) -> boolean; Full ( Queue ) -> boolean; Push ( Queue, Element) -> nothing; Pull ( Queue ) -> Element; begin Queue (MaxLength) = Queue:[ MaxLength; length:=0; list=alist(Element) ]; Length ( queue ) = queue.length; Empty ( queue ) = (queue.length <= 0); Full ( queue ) = (queue.length >= queue.MaxLength); Push ( queue, element ) = [ exception (Full(queue), "Queue Overflow"); queue.length:= queue.length + 1; add (queue.list, element)]; Pull ( queue ) = [ exception (Empty(queue), "Queue Underflow"); queue.length:= queue.length - 1; remove(first(queue.list))]; end component GenericQueue;