ВУЗ:
Составители:
Рубрика:
29
cur.next.prev:=v;
cur.next:=v;
end
end;
procedure ListIterator.Delete;
var v: PNode;
begin
Assert(cur<>nil);
if cur=L.f then
begin
L.DeleteFirst;
cur:=L.f;
end
else if cur=L.l then
begin
L.DeleteLast;
cur:=L.l;
end
else
begin
v:=cur;
cur.prev.next:=cur.next;
cur.next.prev:=cur.prev;
cur:=cur.next;
Dispose(v);
end
end;
Отметим небольшое изменение кода в Delete: после L.DeleteFirst вы-
зывается cur:=L.f, а после L.DeleteLast вызывается cur:=L.l (ранее эти
действия выполнялись непосредственно
внутри DeleteFirst и DeleteLast
поскольку итератор был внутренним).
Отметим также, что в методах класса ListIterator мы осуществляем
доступ к закрытым полям f и l класса List. Напомним, что это возможно, по-
скольку классы List и ListIterator определены в одном модуле.
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »