Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.02 KB | None | 0 0
  1. program newsp;
  2. type list = ^node;
  3. node = record
  4. elem: integer;
  5. next: list
  6. end;
  7. var L1: list;
  8.  
  9. function BuildList : list;
  10. var p: list;c: integer;
  11. begin read(c);
  12. if (c = 0) then BuildList:=nil
  13. else begin
  14. new(p);
  15. p^.elem := c;
  16. p^.next := BuildList();
  17. BuildList := p;
  18. end;
  19. end;
  20.  
  21. procedure add(var L:list; t: integer);
  22. var
  23.     p: list;
  24. begin
  25.     new(p);
  26.     p^.elem := t;
  27.     p^.next := L;
  28.     L := p;
  29. end;
  30.  
  31. function get_last(k : list):integer;
  32. begin
  33.     while (k^.next <> nil) do
  34.         k := k^.next;
  35.     get_last := k^.elem;
  36. end;
  37.  
  38. procedure del_last (var L:list);
  39. var
  40.     p: list;
  41. begin
  42.     if (L = nil) then
  43.         exit;
  44.     if (L^.next = nil) then begin
  45.         dispose(L);
  46.         L := nil;
  47.     end
  48.     else begin
  49.         p := L;
  50.         while (p^.next^.next <> nil) do
  51.             p := p^.next;
  52.         dispose(p^.next);
  53.         writeln(p^.elem);
  54.         p^.next := nil;
  55.     end;
  56. end;
  57.  
  58.  
  59. procedure whynot(var m : list);
  60. begin
  61.     add(m, get_last(m));
  62.     del_last(m);
  63. end;
  64.  
  65. begin
  66. L1:=Buildlist();
  67. whynot(L1);
  68. while L1<>nil do begin
  69.     write(L1^.elem, ' ');
  70.     L1:=L1^.next;
  71. end;
  72. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement