ВУЗ:
Составители:
Рубрика:
42
Добавление  элемента  будем  проводить  в  конец  очереди.  Для  этого  вначале 
создадим новый узел и, если список не пуст, свяжем с ним поле next последнего 
элемента. Если же список пуст, то добавляемый элемент является первым, поэто-
му присвоим указателю f его адрес. В любом случае добавленный элемент явля-
ется последним, поэтому 
присвоим указателю l адрес добавленного элемента:  
v:=NewNode(i,nil); 
if IsEmpty then 
  f:=v 
else l^.next:=v; 
l:=v; 
Извлечение  элемента  будем  проводить  из  начала  очереди.  Для  этого  сохра-
ним адрес первого элемента во вспомогательном указателе, переместим указатель 
f на следующий элемент очереди и удалим элемент, адрес которого сохранен во 
вспомогательном указателе, предварительно вернув значение удаляемого элемен-
та. Если удаляемый элемент является последним, то изменим также l на nil: 
v
l
f
v:=f; 
f:=f^.next; 
if f=nil then 
  l:=nil; 
Result:=v^.data; 
Dispose(v); 
Поместим реализацию класса «Очередь целых» в модуль IntQueue. Удобно 
также ввести имя для типа элементов очереди: 
type DataType=integer; 
Если  теперь  потребуется  создать,  скажем,  очередь  вещественных  элементов,  то 
следует  скопировать  содержимое  файла IntQueue.pas в  файл RealQuеue.pas  и  из-
менить в нем определение типа DataType: 
type DataType=real; 
Приведем код
 модуля IntQueue: 
unit IntQueue; 
interface 
type 
  DataType = integer; 
  Queue = class 
  private 
    f,l: PNode; 
