36 lines
461 B
Plaintext
36 lines
461 B
Plaintext
Enqueue := function(v, x)
|
|
Add(v[1], x);
|
|
end;
|
|
|
|
Dequeue := function(v)
|
|
local n, x;
|
|
n := Size(v[2]);
|
|
if n = 0 then
|
|
v[2] := Reversed(v[1]);
|
|
v[1] := [ ];
|
|
n := Size(v[2]);
|
|
if n = 0 then
|
|
return fail;
|
|
fi;
|
|
fi;
|
|
return Remove(v[2], n);
|
|
end;
|
|
|
|
# a new queue
|
|
v := [[], []];
|
|
|
|
Enqueue(v, 3);
|
|
Enqueue(v, 4);
|
|
Enqueue(v, 5);
|
|
Dequeue(v);
|
|
# 3
|
|
Enqueue(v, 6);
|
|
Dequeue(v);
|
|
# 4
|
|
Dequeue(v);
|
|
# 5
|
|
Dequeue(v);
|
|
# 6
|
|
Dequeue(v);
|
|
# fail
|