Використання вільної пам'яті
newelem ( h, s ); {і стає головним}
else
if lt ( s, h^.v ) then { Вставка перед першим елементом – }
newelem ( h, s ) {новий елемент стає головним}
else
begin { Пошуки місця для вставки }
stop := false; p := h;
while ( p^.next <> nil ) and not stop do
if lt(s, p^.next^.v) then stop := true
else p := p^.next;
{ Вставка після елемента p^ за умови, }
{ що s не дорівнює p^.v }
if p^.v <> s then newelem ( p^.next, s );
end
end
Нехай ця процедура разом із допоміжними до неї міститься в модулі strlist. Як бачимо, вона задає вставку елемента після перевірки його відсутності в списку. Тоді в наступній програмі розв'язання задачі з умовою (2) функція isin не потрібна:
program namlist2(input, output);
uses strlist;
var pss : Tple; s : str;
begin
pss := nil; readln ( s );
while s <> '' do
begin
addord ( s, pss );
readln ( s )