Основы программирования. Динамические массивы. Списки. Ассоциативные массивы. Деревья. Хеш-таблицы - 23 стр.

UptoLike

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

25
L:=List.Create;
end;
destructor Stack.Destroy;
begin
L.Destroy;
end;
procedure Stack.Push(i: integer);
begin
L.AddLast(i);
end;
function Stack.Pop: integer;
begin
Result:=L.Last;
L.DeleteLast;
end;
function Stack.Top: integer;
begin
Result:=L.Last;
end;
function Stack.IsEmpty: boolean;
begin
Result:=L.IsEmpty;
end;
2.4 Класс «Список» с внешним итератором
Внешний итераторэто некоторый обобщенный указатель на элементы
контейнера, реализуемый в виде внешнего класса. Он инициализируется контей-
нером и при инициализации устанавливается в начало контейнера. Он может пе-
редвигаться по элементам контейнера в прямом или обратном порядке. Наконец,
в позиции итератора можно вставлять и удалять элементы.
Напомним, что интерфейс класса «Список
» из предыдущего пункта является
«жирным» и содержит группу методов для работы с внутренним итератором, а
также для вставки и удаления в позиции итератора. Переместим эти методы во
внешний итератор, разбив таким образом класс списка на два более легковесных
класса. При этом из класса «Список» в класс итератора списка перейдет приват
-
ное поле-указатель на текущий элемент списка. В класс итератора добавим также
поле-указатель на список. Кроме этого, переименуем свойство Current в Data
(поскольку итератор представляет один элемент списка, его бессмысленно назы-
вать Current) и добавим в интерфейс итератора метод
Assign(it), копирующий в итератор, вызвавший данный метод, внутренние
поля итератора
it.