24 lines
967 B
Plaintext
24 lines
967 B
Plaintext
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;
|