Вот задача:
program lab1_2;
uses crt;
type plist = ^tlist;
tlist = record
info: integer;
link: plist;
end;
var first1, posl1, first2, posl2: plist;
p, k, max: plist;
s: integer;
n, i: integer;
procedure vvod (var first, posl: plist);
var s: integer;
begin
posl:=first;
write ('Введите следующий элемент: ');
readln(s);
while s<>-999 do
begin
new(p);
p^.info:=s;
p^.link:=posl;
posl:=p;
write ('Введите следующий элемент: ');
readln(s);
end;
end;
begin
clrscr;
first1:=nil;
vvod (first1, posl1);
first2:=nil;
vvod (first2, posl2);
p:=posl2;
{Объединение}
while p<>nil do begin
if p^.link = nil then begin
p^.link:=posl1;
break;
end;
p:=p^.link;
end;
{Вывод объединённого}
p:= posl2;
while p<>nil do begin
inc (n);
write (p^.info, ' ');
p:=p^.link;
end;
{Сортировка}
k:= posl2;
for i:=1 to n do
begin
p:=k;
max:=p;
while p<>nil do
begin
if max^.info < p^.info then max:= p;
p:=p^.link;
end;
s:=max^.info;
max^.info:= p^.info;
p^.info:= s;
k:=k^.link;
end;
{Вывод отсортированного}
writeln;
p:= posl2;
while p<>nil do begin
inc (n);
write (p^.info, ' ');
p:=p^.link;
end;
readkey;
end.