RosettaCodeData/Task/Queue-Definition/GAP/queue-definition.gap

35 lines
452 B
Text
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
Enqueue := function(v, x)
2016-12-05 22:15:40 +01:00
Add(v[1], x);
2013-04-10 23:57:08 -07:00
end;
Dequeue := function(v)
2016-12-05 22:15:40 +01:00
if IsEmpty(v[2]) then
if IsEmpty(v[1]) then
return fail;
else
v[2] := Reversed(v[1]);
v[1] := [];
fi;
fi;
return Remove(v[2]);
2013-04-10 23:57:08 -07:00
end;
2016-12-05 22:15:40 +01:00
2013-04-10 23:57:08 -07:00
# 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