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

UptoLike

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

27
Методы в новом варианте класса List реализуются так же, как и одноимен-
ные методы в прежнем варианте с внутренним итератором. Необходимо внести
лишь два изменения. Во-первых, в телах методов убираются все операторы, со-
держащие действия с полем cur. Во-вторых, в реализации метода Remove внут-
ренний итератор заменяется на
внешний:
procedure List.Remove(x: DataType);
var it: ListIterator;
begin
it:=ListIterator.Create(Self);
while not it.Eol do
if it.Data=x then
it.Delete(x)
else it.Next;
it.Destroy;
end;
Реализация методов в классе ListIterator также практически идентична
реализации одноименных методов списка с внутренним итератором с тем исклю-
чением, что все вхождения полей f и l заменяются на L.f и L.l:
constructor ListIterator.Create(LL: List);
begin
L:=LL;
cur:=L.f;
end;
function ListIterator.GetData: DataType;
begin
Assert(cur<>nil);
Result:=cur.data
end;
procedure ListIterator.SetData(d: integer);
begin
Assert(cur<>nil);
cur.data:=d
end;
procedure ListIterator.Assign(it: ListIterator);
begin
cur:=it.cur;
L:=it.L;
end;
procedure ListIterator.Next;
begin
Assert(cur<>nil);