Використання вільної пам'яті
if h = nil then isin := false
else
begin
while ( h^.next <> nil ) and ( h^.v <> s ) doh := h^.next;
{ ( h^.next = nil ) or ( h^.v = s ) }
isin := ( h^.v = s )
end
end
Оскільки список починається елементом pss^, то виклик функції має вигляд isin(s, pss). Зміна вказівника h при виконанні процедури не міняє значення pss і не веде до втрати зв'язку з головою списку, оскільки h є параметром-значенням.
Рядки, представлені в списку, друкуються з його початку просуванням по елементах до кінця:
procedure writelst ( h : TPle );
begin
while h <> nil do
begin writeln ( h^.v ); h := h^.next end
end
Зберемо означення типів str, TPle, Tle та наведені підпрограми в модуль strlist, і запишемо розв'язання задачі (1) у вигляді програми namlist1:
program namlist1(input, output);
uses strlist;
var pss : TPle; s : str;
begin
pss := nil; readln ( s );
while s <> '' do
begin
if not isin ( s, pss ) then add ( s, pss );
readln ( s )