PROCEDURE InsertSort* (VAR l: TList; ref: MStation.TStation); VAR l2:TList; count,index:LONGINT; comp,search:TListElementPtr; dist:REAL; BEGIN NEW(comp); NEW(search); l2.head:=NIL; comp:=l.head; WHILE l.head#NIL DO comp:=l.head; l.head:=l.head.next; dist:=MStation.Distance(ref,comp.station); search:=l2.head; index:=0; WHILE search#NIL DO IF MStation.Distance(ref,search.station)> dist THEN search:=NIL; ELSE INC(index); search:=search.next; END; END; comp.next:=l2.head; IF index=0 THEN l2.head:=comp; ELSE FOR count:=1 TO index DO comp.next:=comp.next.next; END; search:=l2.head; count:=1; WHILE count#index DO INC(count); search:=search.next; END; search.next:=comp; END; END; l.head:=l2.head; END InsertSort;