program omfg;
uses crt;
type
plist = ^list;
list = record
inf: integer;
next: plist;
end;

var beg,t,p1,p2,p3,first:plist;
n,i:integer;

procedure vivod(x:plist);
begin
t:=x;
while t<>nil do
begin
write(t^.inf,' ');
t:=t^.next;
end;
end;

procedure dob(x1,x2:plist);
begin
while x1^.next<>nil do x1:=x1^.next;
x1^.next:=x2;
end;

procedure sozdat(j:integer;var x1:plist);
begin
new(first);
first^.next:=nil;
first^.inf:=random(10)+j;
for i:=1 to n-1 do
begin
new(p3);
p3^.inf:=random(10)+j;
p3^.next:=nil;
p3^.next:=first;
first:=p3;
end;
x1:=p3;
end;

begin
clrscr;
readln(n);
randomize;

sozdat(-10,p1);
beg:=p1;
vivod(p1);
writeln;

sozdat(1,p2);
vivod(p2);
writeln;

dob(p1,p2);
writeln;

p1:=beg;
vivod(p1);
readln;
end.


помогите перевести код в с++