ВУЗ:
Составители:
Рубрика:
44
Result:=f=nil;
end;
function Queue.First: DataType;
begin
Assert(not IsEmpty);
Result:=f^.data;
end;
end.
При выполнении операций Dequeue и First осуществляется проверка ут-
верждения Assert(not IsEmpty), как и при выполнении аналогичных опера-
ций для стека.
Одновременное использование очередей с разными типами элементов
При использовании в одной программе очередей с разными типами элемен-
тов перед именем типа Queue следует указывать имя модуля во избежание ошиб-
ки неоднозначности имени Queue во время компиляции. Например, вот как сле-
дует использовать в одной программе очередь целых и очередь вещественных:
uses IntQueue, RealQueue;
var q1: IntQueue.Queue;
q2: RealQueue.Queue;
begin
q1:= IntQueue.Queue.Create;
q2:= RealQueue.Queue.Create;
...
Для удобства можно
также в основной программе ввести другие имена для
типов IntQueue.Queue и RealQueue.Queue:
uses IntQueue,RealQueue;
type IQueue=IntQueue.Queue;
RQueue=RealQueue.Queue;
var q1: IQueue;
q2: RQueue;
begin
q1:= IQueue.Create;
q2:= RQueue.Create;
...
Разумеется, в модулях IntQueue и RealQueue можно сразу дать очередям
разных типов имена IQueue и RQueue. Но такой способ менее удобен, посколь-
ку потребует менять не только имя типа DataType, но и
менять имя типа очере-
ди по всему модулю (в частности, при определении всех методов).
К сожалению, в языке Delphi Pascal отсутствует возможность создавать клас-
сы, параметризованные некоторым типом (например, Queue<real>; такая воз-