Компонентный Паскаль/Связанный список: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 55:
 
==== Вставка нового элемента ====
Вставку нового элемента в список рационально (но не обязательно) реализовать в форме метода объекта:. Представленный вариант ниже вставляет новый элемент только в конец списка. Для включения элемента в произвольное место, необходимо в объект TDblList свойство "cur"("current", "текущий"). Оно как раз и будет указателем на то место, куда вставлять.
<source lang="oberon2">
PROCEDURE (l: TDblList)Insert, NEW;
 
VAR
el, el1 : POINTER TO TDblElem;
BEGIN
NEW(el);
IF l.len=0 THEN
l.first:=el;
l.end:=el
ELSE
el1:=l.end; (* сохранение бывшего последнего элемента *)
l.end:=el; (* присвоение нового элемента *)
el1.forward:=el; (* создание перекрёстных ссылок *)
el.backward:=el1;
END;
INC(l.len);
END Insert;
</source>
Работа с указателями в Компонентном Паскале упрощена до предела<ref name="указ">Традиционно считается, что работа с указателями сложна. На самом деле это не так сложно, если работать со строго типизированными данными. См. {{w|Указатель (тип данных)}}</ref>.
 
== Примечания ==