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

UptoLike

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

23
cur.prev.next:=v;
cur.prev:=v;
end
end;
procedure List.InsertAfter(x: DataType);
var v : PNode;
begin
Assert(cur<>nil);
if cur=l then
AddLast(x)
else
begin
v:=NewNode(x,cur,cur.next);
cur.next.prev:=v;
cur.next:=v;
end
end;
procedure List.Delete;
var v: PNode;
begin
Assert(cur<>nil);
if cur=f then DeleteFirst
else if cur=l then DeleteLast
else
begin
v:=cur;
cur.prev.next:=cur.next;
cur.next.prev:=cur.prev;
cur:=cur.next;
Dispose(v)
end
end;
Сделаем несколько замечаний по реализации. В методе InsertBefore, ес-
ли осуществляется вставка перед первым
элементом, то мы просто вызываем ме-
тод AddFirst. Аналогично в методе InsertAfter мы пользуемся уже напи-
санным методом AddLast, если осуществляется вставка в конец. В методе
Delete мы также частично пользуемся уже написанными методами: если удаля-
ется первый элемент, мы просто вызываем DeleteFirst, а при удалении по-
следнегоDeleteLast. Наконец, метод
Remove целиком состоит из вызовов
других методов и не обращается к приватным полям класса List. В реализации
Remove следует обратить внимание на то, что метод Delete также продвигает