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

 
==== Удаление элемента ====
Удаление элемента из списка опасно тем, что может разорвать цепочку, и если её не срастить -- указатель будет висеть в никуда.
<source lang="oberon2">
PROCEDURE (l: TDblList)Remove, NEW;
VAR
el, el1 : POINTER TO TDblElem;
BEGIN
IF l.len>1 THEN (* если список не пустой *)
el:=l.end; (* найти последний элемент *)
el1:=el.backward;(* найти предпослдений элемент *)
el:=NIL; (* последний элемент удалить *)
l.end:=el1; (* последним сделать предпоследний *)
DEC(l.len); (* уменьшить длину *)
ELSE (* остался последний элемент *)
el:=l.end;
el:=NIL;
l.end:=NIL;
l.first:=NIL;
l.len:=0;
END;
INC(l.len);
END Remove;
</source>
 
== Примечания ==
788

правок