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.