Advertisement
pseudocreator

SPA1 lista(obrni)

Apr 7th, 2014
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE liste;
  2. FROM InOut IMPORT WriteString, WriteLn, ReadInt, WriteInt;
  3. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  4.  
  5. TYPE
  6.     pok = POINTER TO Slog;
  7.     Slog = RECORD
  8.               kinf : INTEGER;
  9.               veza : pok
  10.            END;
  11.  
  12.     ProcTip = PROCEDURE (VAR pok,INTEGER);
  13.  
  14. VAR
  15.    lista: pok;
  16.    odabir : INTEGER;
  17.  
  18. PROCEDURE stampaj(VAR lista: pok); FORWARD;
  19. PROCEDURE unisti(VAR lista: pok); FORWARD;
  20. PROCEDURE obrni(VAR lista:pok); FORWARD;
  21.  
  22.  
  23. PROCEDURE dodajpocetak(VAR lista: pok;int : INTEGER);
  24. VAR
  25.    temp : pok;
  26. BEGIN
  27.      NEW(temp);
  28.      temp^.kinf := int;
  29.      temp^.veza := lista;
  30.      lista := temp
  31. END dodajpocetak;
  32.  
  33. PROCEDURE dodajkraj(VAR lista: pok;int: INTEGER);
  34. VAR
  35.    temp, tekuci : pok;
  36. BEGIN
  37.      NEW(temp);
  38.      temp^.kinf := int;
  39.      temp^.veza := NIL;
  40.      IF lista = NIL THEN
  41.        lista := temp
  42.      ELSE
  43.          tekuci := lista;
  44.          WHILE tekuci^.veza <> NIL DO
  45.               tekuci := tekuci^.veza
  46.          END;
  47.          tekuci^.veza := temp
  48.      END
  49. END dodajkraj;
  50.  
  51. PROCEDURE ucitaj(VAR lista: pok;p: ProcTip);
  52. VAR
  53.    i, n , int : INTEGER;
  54. BEGIN
  55.      WriteString('Unesite n: ');
  56.      ReadInt(n);
  57.      FOR i := 1 TO n DO
  58.         ReadInt(int);
  59.         p(lista,int);
  60.         WriteLn
  61.      END;
  62.      WriteLn;
  63.      WriteString('Stampanje liste: ');
  64.      WriteLn;
  65.      stampaj(lista);
  66.      WriteLn;
  67. END ucitaj;
  68.  
  69. PROCEDURE stampaj(VAR lista: pok);
  70. VAR
  71.    temp : pok;
  72. BEGIN
  73.      temp := lista;
  74.      WHILE temp <> NIL DO
  75.           WriteInt(temp^.kinf,0);
  76.           WriteLn;
  77.           temp := temp^.veza
  78.      END;
  79. END stampaj;
  80.  
  81. PROCEDURE unisti(VAR lista: pok);
  82. VAR
  83.    temp : pok;
  84. BEGIN
  85.      temp := lista;
  86.      WHILE lista <> NIL DO
  87.           DISPOSE(temp);
  88.           lista := lista^.veza;
  89.           temp := lista
  90.      END
  91. END unisti;
  92.  
  93. PROCEDURE demonstrirajobrni(VAR lista: pok);
  94. BEGIN
  95.      WriteString('Pre obrtanja!');
  96.       WriteLn;
  97.        stampaj(lista);
  98.         WriteLn;
  99.      WriteString('Posle obrtanja! ');
  100.       WriteLn;
  101.        obrni(lista);
  102.         stampaj(lista);
  103. END demonstrirajobrni;
  104.  
  105. PROCEDURE obrni(VAR lista:pok);
  106. VAR
  107.  temp,nova,pred:pok;
  108.  
  109. BEGIN
  110.      nova := NIL;
  111.      temp := lista;
  112.      pred := NIL;
  113.      WHILE temp # NIL DO
  114.           dodajpocetak(nova,temp^.kinf);
  115.           pred := temp;
  116.           temp := temp^.veza;
  117.           DISPOSE(pred);
  118.      END;
  119.  lista := nova;
  120. END obrni;
  121.  
  122.  
  123. BEGIN
  124.      lista := NIL;
  125.      WriteString('Dodaj pocetak ili dodaj kraj, 1/2: ');
  126.      ReadInt(odabir); WriteLn;
  127.      IF odabir = 1 THEN
  128.        ucitaj(lista,dodajpocetak);
  129.      ELSIF odabir = 2 THEN
  130.           ucitaj(lista,dodajkraj);
  131.      ELSE
  132.          WriteString('Pogresan unos! ')
  133.      END;
  134.      demonstrirajobrni(lista);
  135.      unisti(lista);
  136. END liste.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement