Advertisement
Guest User

lista los 100-200

a guest
Jan 20th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.02 KB | None | 0 0
  1. //operowanie lista
  2. program lista1;
  3. {$APPTYPE CONSOLE}
  4. uses
  5.   SysUtils;
  6.  
  7. TYPE  PElem = ^TElem;
  8.       TElem = RECORD
  9.                 dane : integer;
  10.                 wsk :PElem;
  11.               END;
  12. VAR q,poczatek,glowa,temp,koniec,biezacy,po,na:PElem;
  13.     n,k,d:integer;
  14.  
  15. function ListSearch(head:PElem;k:integer):PElem;
  16. begin
  17.   while (head <> nil) and (k <> head^.dane) do
  18.     head := head^.wsk;
  19.   ListSearch := head;
  20. end;
  21.  
  22. procedure TworzListePocz(n:integer);
  23. begin
  24.    poczatek:=nil;
  25.    WHILE n>0 DO
  26.     BEGIN
  27.       new(q);
  28.       q^.wsk:=poczatek;
  29.       poczatek:=q;
  30.       poczatek^.dane:=100+random(200);
  31.       n:=n-1;
  32.     END;
  33. end;
  34.  
  35. procedure TworzListeKoniec(n:integer);
  36. Begin
  37.   koniec:=nil; poczatek:=nil;
  38.   WHILE n>0 DO
  39.    BEGIN
  40.      new(q);
  41.      q^.wsk:=nil;
  42.      IF koniec<>nil THEN koniec^.wsk:=q
  43.                     ELSE poczatek:=q;
  44.      koniec:=q;
  45.      koniec^.dane:=n;
  46.      n:=n-1;
  47.   End;
  48. End;
  49.  
  50. procedure WypiszListe;
  51. var pom,q:PElem;
  52. begin
  53.   writeln;
  54.   pom:=poczatek;
  55.   WHILE pom<>NIL DO
  56.    BEGIN
  57.       q:=pom;
  58.       write('   ',q^.dane);
  59.       pom:=q^.wsk;
  60.    END;
  61.   writeln;
  62. end;
  63.  
  64. //Dodawanie elementu do środka listy
  65. //(za elementem wskazanym przez bieżący)
  66. Procedure DodajZa(w:integer);
  67. BEGIN
  68.       po:=biezacy;
  69.       na:=biezacy^.wsk;
  70.       NEW(biezacy);
  71.       biezacy^.dane:=w;
  72.       biezacy^.wsk:=na;
  73.       po^.wsk:=biezacy;
  74. End;
  75.  
  76.  
  77. Procedure DodajPrzedNowy(k:integer);
  78. var po,na:PElem;
  79.     test:integer;
  80. begin
  81. {dodawanie elementu za biezacym}
  82.     po:=biezacy;
  83.     na:=biezacy^.wsk;
  84.     NEW(biezacy);
  85.     biezacy^.dane:=k;
  86.     biezacy^.wsk:=na;
  87.     po^.wsk:=biezacy;
  88. {przesuwanie przed biezacy}
  89.     test:=po^.dane;
  90.     po^.dane:=biezacy^.dane;
  91.     biezacy^.dane:=test;
  92. end;
  93.  
  94. Procedure DodajPrzedStary(k:integer);
  95. var {po,na:PElem;}
  96.     test:integer;
  97. begin
  98.     dodajZa(k);
  99. {przesuwanie przed biezacy}
  100.     test:=po^.dane;
  101.     po^.dane:=biezacy^.dane;
  102.     biezacy^.dane:=test;
  103. end;
  104.  
  105. Procedure UsunZa(var w:integer);
  106. BEGIN
  107.    new(na);
  108.    na:=biezacy^.wsk;
  109.    w:=na^.dane;
  110.    biezacy^.wsk:=na^.wsk;
  111.    Dispose(na);
  112. END;
  113.  
  114. Procedure Usun(var w:integer);
  115. BEGIN
  116.    new(na);
  117.    na:=biezacy^.wsk;
  118.    w:=biezacy^.dane;
  119.    Biezacy^.wsk:=na^.wsk;
  120.    Biezacy^.dane:=na^.dane;
  121.    Dispose(na);
  122. End;
  123.  
  124.  
  125. Begin
  126.  
  127.      write('Podaj dlugosc listy (0<n<100) n='); readln(n);
  128. //     writeln('*** tworzenie listy od poczatku ***');
  129. //     TworzListePocz(n);
  130. //     glowa:=poczatek;
  131. //     WypiszListe;
  132.  
  133.      writeln('*** tworzenie listy od konca ***');
  134.      TworzListePocz(n);
  135.      glowa:=poczatek;
  136.      WypiszListe;
  137.  
  138. //wyszukiwanie elementu z listy
  139.      writeln;
  140.      write('Poszukiwany element dane=' );readln(k);
  141.      temp:=ListSearch(glowa,k);
  142.      IF temp<>NIL THEN writeln('Znaleziona dana = ',temp^.dane)
  143.                   ELSE writeln('Nie znaleziono wartosci ',k);
  144.  
  145. //dodanie do srodka - za biezacy
  146.      writeln;
  147.      write('Za ktory element wstawic? dane=');readln(d);
  148.      write('Jaka wartosc wstawic? k=');readln(k);
  149.      biezacy:=ListSearch(glowa,d);
  150.      if biezacy<>nil then DodajZa(k)
  151.                      else writeln('Nie istnieje ',d,' na liscie');
  152.      WypiszListe;
  153.  
  154. // dodanie - przed biezacym
  155.      writeln;
  156.      write('Przed ktory element wstawic? dane=');readln(d);
  157.      write('Jaka wartosc wstawic? k=');readln(k);
  158.      biezacy:=ListSearch(glowa,d);
  159.      if biezacy<>nil then DodajPrzedStary(k)
  160.                      else writeln('Nie istnieje ',d,' na liscie');
  161.      WypiszListe;
  162.  
  163. //usuwanie za biezacym
  164.      writeln; write('Za ktorym elementem usunac? dane=');readln(d);
  165.      biezacy:=ListSearch(glowa,d);
  166.      if biezacy<>nil then begin UsunZa(d);writeln('Usunieto ',d); end
  167.                      else writeln('Nie istnieje ',d);
  168.      WypiszListe;
  169.  
  170. //usuwanie biezacego
  171.      writeln; write('Ktory element usunac? dane=');readln(d);
  172.      biezacy:=ListSearch(glowa,d);
  173.      if biezacy<>nil then begin Usun(d);writeln('Usunieto ',d); end
  174.                      else writeln('Nie istnieje ',d);
  175.      WypiszListe;
  176.  
  177.     readln;
  178. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement