Guest User

Untitled

a guest
May 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.06 KB | None | 0 0
  1. program lab;
  2. type
  3.   list = ^node;
  4.   node = record
  5.     data: integer;
  6.     next: list;
  7.   end;
  8.  
  9. var
  10.   L, L1: list;
  11.   E: integer;
  12.  
  13. procedure createList(var L: list);
  14. var
  15.   n,i: integer;
  16.   t: list;
  17. begin
  18.   writeln('Количество элементов в списке:');
  19.   readln(n);
  20.   writeln('Элементы списка:');
  21.   t:= nil;
  22.   for i:= 1 to n do
  23.   begin
  24.     new(L);
  25.     L^.next:= t;
  26.     readln(L^.data);
  27.     t:= L;
  28.   end;
  29. end;
  30.  
  31. procedure printList(L: list);
  32. begin
  33.   while L <> nil do
  34.   begin
  35.     write(L^.data, ' ');
  36.     L:= L^.next;
  37.   end;
  38.   writeln;
  39. end;
  40.  
  41. function invertList(l: list): list;
  42. var
  43.   t: list;
  44.   l1: list;
  45. begin
  46.   t:= nil;
  47.   while l <> nil do
  48.   begin
  49.     new(l1);
  50.     l1^.next:= t;
  51.     l1^.data:= l^.data;
  52.     t:= l1;
  53.     l:= l^.next;
  54.   end;
  55.   invertList:= l1;
  56. end;
  57.  
  58. procedure deleteNextNode(var L: list);
  59. var
  60.   t: list;
  61. begin
  62.   t:= l^.next;
  63.   l^.next:= t^.next;
  64.   dispose(t);
  65. end;
  66.  
  67. procedure onlyFirst(var L: list; E: integer);
  68. var
  69.   h: list;
  70. begin
  71.   h:= L;
  72.   while (L <> nil) and (L^.data <> E) do
  73.     L:= L^.next;  
  74.   while L^.next <> nil do
  75.   begin
  76.     if L^.next^.data = E then
  77.       deleteNextNode(L);
  78.     L:= L^.next;
  79.   end;
  80.   L:= h;
  81. end;
  82.  
  83. procedure onlyLast(var L:list; E: integer);
  84. var
  85.   h: list;
  86.   n: integer;
  87. begin
  88.   h:= L;
  89.   n:= -1;
  90.   while L <> nil do
  91.   begin
  92.     if L^.data = E then
  93.       inc(n);
  94.     L:= L^.next;
  95.   end;
  96.   L:= h;
  97.   while (L^.next <> nil) and (n > 0) do
  98.   begin
  99.     if L^.next^.data = E then
  100.     begin
  101.       deleteNextNode(L);
  102.       dec(n);
  103.     end;
  104.     L:= L^.next;
  105.   end;
  106.   L:= h;
  107. end;
  108.  
  109. begin
  110.   createList(L);
  111.  
  112.   writeln('Список:');
  113.   printList(L);
  114.   L1:= invertList(L);
  115.   writeln('Инвертированный список:');
  116.   printList(L1);
  117.  
  118.   L1:= invertList(L1);
  119.   writeln('E:');
  120.   readln(E);
  121.  
  122.   onlyFirst(L, E);
  123.   writeln('Только первое включение:');
  124.   printList(L);
  125.  
  126.   onlyLast(L1, E);
  127.   writeln('Только последнее включение:');
  128.   printList(L1);
  129. end.
Add Comment
Please, Sign In to add comment