program rev;
type
Tlist = ^ListItem;
ListItem = record
info : integer;
next : Tlist;
end;
var
list : Tlist;
list1 : Tlist;
k : integer;
procedure p1(list : Tlist; var new_list : Tlist);
var
temp_list : Tlist;
begin
new_list := nil;
while list <> nil do begin
new(temp_list);
temp_list^.info := list^.info;
temp_list^.next := new_list;
new_list := temp_list;
list := list^.next;
end;
end; { p1 }
procedure add(var list : Tlist; info : integer);
var
temp_list : Tlist;
begin
if list = nil then begin
new(list);
list^.info := info;
list^.next := nil;
end else begin
new(temp_list);
temp_list^.info := info;
temp_list^.next := list;
list := temp_list;
end;
end; { add }
procedure display(list : Tlist);
begin
while list <> nil do begin
write(list^.info, ' ');
list := list^.next;
end;
writeln
end; { display }
begin
for k := 1 to 10 do add(list, k);
display(list);
p1(list, list1);
display(list1);
end.