{ Объявляешь доп. переменные }
var
p1, p2, T: spisok;
first: boolean;
... { Здесь - ввод списков }
{
Проверяешь, в каком списке стартовый элемент больший...
Этот список для тебя - ПЕРВЫЙ
}
if begqa^.inf > begqb^.inf then begin
p1 := begqa; p2 := begqb;
first := true;
end
else begin
p1 := begqb; p2 := begqa;
first := false;
end;
{
Дальше - сам алгоритм
}
while (p1 <> nil) and (p2 <> nil) do begin
while (p1^.link <> nil) and (p1^.link^.inf > p2^.inf) do p1 := p1^.link;
if p1.link <> nil then begin
T := p2^.link;
p2^.link := p1^.link;
p1^.link := p2;
p2 := T;
end;
T := p1;
p1 := p1^.link;
end;
{
Не забываем "прилепить" к концу первого списка остаток второго, если он есть
}
T^.link := p2;
{
ну, и распечатыаем соответственно тот список, который ПЕРВЫЙ (см. выше)
}
if first then p := begqa
else p := begqb;
while p<>nil do begin
write(' ',p^.inf); p:=p^.link;
end;
writeln;
i,k,max:byte;? А если будет два отрицательных числа в начале обоих списков? Проблема... Описывай как Integer...