program stack; const n=4; type spisok=^tpr; tpr=record inf:integer; link:spisok; end; var BEGQA,BEGQB,ENDQA,ENDQB,begv,endv,p,w,v :spisok; i:byte; begin {-----------C03DAHUE CnUCK0B---------} begqa:=nil; begqb:=nil; new(p); writeln ('vvod 1 elementa spiska a'); readln(p^.inf); p^.link:=nil; Begqa:=p; endqa:=p; for i:=1 to n do begin new(p); writeln('vvedite element spiska a'); readln(p^.inf); p^.link:=nil; endqa^.link:=p; endqa:=p; end; new(p); writeln ('vvod 1 elementa spiska b'); readln(p^.inf); p^.link:=nil; Begqb:=p; endqb:=p; for i:=1 to n do begin new(p); writeln('vvedite element spiska b'); readln(p^.inf); p^.link:=nil; endqb^.link:=p; endqb:=p end; {----------Algoritm-----------} begv:=nil; endv:=nil; new(v); v^.inf:=0; v^.link:=nil; begv:=v; endv:=v; p:=begqa; w:=begqb; while (p<>nil) and (w<>nil) do begin new(v); if (p=nil) then begin v^.inf:=w^.inf; w:=w^.link; v^.link:=nil; endv^.link:=v; endv:=v end else if (w=nil) then begin v^.inf:=p^.inf; p:=p^.link; v^.link:=nil; endv^.link:=v; endv:=v end else if p^.inf>=w^.inf then begin v^.inf:=p^.inf; p:=p^.link; v^.link:=nil; endv^.link:=v; endv:=v end else begin v^.inf:=w^.inf; w:=w^.link; v^.link:=nil; endv^.link:=v; endv:=v end end; {--------Pacne4aTka-------} p:=Begqa; while p<>nil do begin write(' ',p^.inf); p:=p^.link; end; writeln; p:=Begqb; while p<>nil do begin write(' ',p^.inf); p:=p^.link; end; p:=Begv; writeln; while p<>nil do begin write(' ',p^.inf); p:=p^.link; end; readln; end.