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