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

UptoLike

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

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 определены в одном модуле.