ВУЗ:
Составители:
Рубрика:
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.
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »