ВУЗ:
Составители:
Рубрика:
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>;  такая  воз-
