Advertisement
nobody01

listy

Jan 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.67 KB | None | 0 0
  1. program List;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils;
  9.  
  10. type
  11.     PElement = ^TElement;
  12.     TElement = record
  13.         Data: integer;
  14.         Next: PElement;
  15.     end;
  16.  
  17. var
  18.     First: PElement;
  19.     Size: integer;
  20.     I: integer;
  21.     Temp: integer;
  22.  
  23. procedure Push(data: integer);
  24. var
  25.   Current: PElement;
  26.   Temp: PElement;
  27. begin
  28.   if First = nil then
  29.   begin
  30.     new(First);
  31.     First^.Data := data;
  32.     First^.Next := nil;
  33.     exit;
  34.   end;
  35.  
  36.   Current := First;
  37.  
  38.   while Current^.Next <> nil do Current := Current^.Next;
  39.  
  40.   Temp := Current;
  41.   new(Current);
  42.   Current^.Data := data;
  43.   Current^.Next := nil;
  44.   Temp^.Next := Current;
  45. end;
  46.  
  47. procedure Print();
  48. var
  49.   Current: PElement;
  50. begin
  51.   Current := First;
  52.   while Current <> nil do
  53.   begin
  54.     write(Current^.Data, ' ');
  55.     Current := Current^.Next;
  56.   end;
  57.   writeln;
  58.  
  59. end;
  60.  
  61. procedure InsertAfter(index: integer; data: integer);
  62. var
  63.   Current, Temp: PElement;
  64.   I: integer;
  65. begin
  66.   if First = nil then
  67.   begin
  68.     writeln('Lista jest pusta. Nie mozna wstawic elementu');
  69.     exit;
  70.   end;
  71.  
  72.   Current := First;
  73.  
  74.   for I := 1 to index do
  75.   begin
  76.     if Current = nil then
  77.     begin
  78.       writeln('Indeks jest za duzy. Nie mozna wstawic elementu.');
  79.       exit;
  80.     end;
  81.  
  82.     Current := Current^.Next;
  83.   end;
  84.  
  85.   new(Temp);
  86.   Temp^.Data := data;
  87.  
  88.   Temp^.Next := Current^.Next;
  89.   Current^.Next := Temp;
  90. end;
  91.  
  92. procedure DeleteAfter(index: integer);
  93. var
  94.    Current, Temp: PElement;
  95.    I : integer;
  96. begin
  97.     if First = nil then
  98.     begin
  99.       writeln('Lista jest pusta. Nie mozna usunac elementu');
  100.       exit;
  101.     end;
  102.  
  103.     Current := First;
  104.  
  105.     for I := 1 to index do
  106.     begin
  107.       if Current = nil then
  108.       begin
  109.         writeln('Indeks jest za duzy. Nie mozna usunac elementu.');
  110.         exit;
  111.       end;
  112.  
  113.       Current := Current^.Next;
  114.     end;
  115.  
  116.     if Current^.Next = nil then
  117.     begin
  118.       writeln('Element jeszcze nie zostal dodany. Nie mozna usunac elementu.');
  119.       exit;
  120.     end;
  121.  
  122.     Temp := Current^.Next^.Next;
  123.     dispose(Current^.Next);
  124.     Current^.Next := Temp;
  125. end;
  126.  
  127. function Find(data: integer): PElement;
  128. var
  129.   Current: PElement;
  130. begin
  131.   Current := First;
  132.   while Current <> nil do
  133.   begin
  134.     if Current^.Data = data then
  135.     begin
  136.       Result := Current;
  137.       exit;
  138.     end;
  139.  
  140.     Current := Current^.Next;
  141.   end;
  142.   Result := nil;
  143. end;
  144.  
  145. begin
  146.   write('Ilosc elementow: ');
  147.   readln(Size);
  148.  
  149.   for I := 0 to size - 1 do
  150.     begin
  151.       write('a[', I, '] = ');
  152.       readln(Temp);
  153.       Push(Temp);
  154.     end;
  155.  
  156.   InsertAfter(0, 10);
  157.   Print();
  158.   DeleteAfter(0);
  159.   Print();
  160.   readln;
  161. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement