ВУЗ:
Составители:
Рубрика:
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 также продвигает
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »