Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 40 стр.

UptoLike

Составители: 

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;