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

UptoLike

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

19
Если удаляется последний элемент, то итератор передвигается на предыдущий,
после чего совершается еще одна итерация цикла, в результате которой достига-
ется конец списка и цикл заканчивается.
Отметим, что внутренние итераторы обладают одним существенным недос-
татком: для каждого списка определен лишь один итератор. В ряде задач одно-
временно требуется несколько указателей
на элементы списка. Например, к этой
категории относится задача о нахождении пары ближайших элементов списка,
рассматриваемая в дальнейшем.
2.2 Реализация методов класса «Список»
Приведем реализацию методов класса Список с учетом всех сделанных выше
замечаний о поведении внутреннего итератора при операциях вставки и удаления.
function NewNode(x: DataType; prev,next: PNode):
PNode;
begin
New(Result);
Result.data:=x;
Result.prev:=prev;
Result.next:=next;
end;
// Основные методы
constructor List.Create;
begin
f:=nil; l:=nil; сur:=nil;
end;
destructor List.Destroy;
begin
while not IsEmpty do
DeleteFirst;
end;
procedure List.AddFirst(x: DataType);
begin
f:=NewNode(x,nil,f);
if f.next<>nil then
f.next.prev:=f;
if l=nil
then
l:=f;
end;
procedure List.AddLast(x: DataType);
begin
l:=NewNode(x,l,nil);