Cvičenie č.4

Ciele
  1. Porozumieť dodanej implementácii ADT Stack (zásobník) implementovanej pomocou poľa.
  2. Podľa pokynov doplniť implementáciu.
  3. Porozumieť dodanej implementácii ADT Stack implementovanej pomocou zoznamu.
  4. Podľa pokynov doplniť implementáciu.
  5. Porozumieť dodanej implementácii ADT Queue (front).
  6. Podľa pokynov doplniť implementáciu.
Úvod
    Náplňou cvičenia je implementácia abstraktných údajových typov (ADT) Stack (zásobník) a Queue (front). Prostriedkom pre realizáciu implementácie je programovací jazyk C a vývojové prostredie Code::Blocks.
Postup
  1. Implementácia ADT Stack s využitím poľa.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Pripravený archív obsahuje tieto súbory:
    • fatal.h - definičný modul pre ošetrenie chýb.
    • stacka.h - definičný modul ADT Stack. Obsahuje definície údajových typov a prototypov operácií.
    • stacka.c - implementačný modul ADT Stack. Definícia štruktúry zásobníka (StackRecord), implementácia operácií.
    • test.c - modul pre testovanie činnosti ADT Stack.
    Operácie ADT Stack:
    • isEmpty - test, či zásobník je prázdny.
    • IsFull - test, či zásobník je plný (iba pri reprezentácii poľom).
    • CreateStack - vytvorí zásobník.
    • DisposeStack - odstráni, uvoľní pamäť.
    • MakeEmpty - vyprázdni zásobník.
    • Push - vloží prvok do zásobníka.
    • Top - vráti prvok na vrchole zásobníka.
    • Pop - odoberie prvok zo zásobníka.
    • TopAndPop - prečíta a zároveň odoberie prvok z vrcholu zásobníka (doplniť).
    Poznámka: Dôkladne preštudujte dodaný kód. V prípade nejasností sa s konkrétnou otázkou obráťte na cvičiaceho.

    Príklad: Vizualizácia činnosti ADT Stack.

  2. Doplnenie implementácie.
    Úloha: Pridajte podporu operácie TopAndPop, ktorá prečíta a zároveň odoberie prvok z vrcholu zásobníka (nie len zavolaním existujúcich operácií).
    Prototyp operácie TopAndPop (stacka.h):
    TElement TopAndPop( Stack S );
    
    Úloha: Pridajte podporu operácie PrintStack, ktorá vypíše obsah zásobníka, bez jeho modifikácie.
    Prototyp operácie PrintStack:
    void PrintStack( Stack S );
    
    Poznámka: Pre overenie činnosti operácie doplňte aj modul pre testovanie.
  3. Implementácia ADT Stack s využitím zoznamu.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Pripravený archív obsahuje tieto súbory:
    • fatal.h - definičný modul pre ošetrenie chýb.
    • stackl.h - definičný modul ADT Stack. Obsahuje definície údajových typov a prototypov operácií.
    • stackl.c - implementačný modul ADT Stack. Definícia štruktúry položky zoznamu, implementácia operácií definovaných v stackl.h.
    • test.c - modul pre testovanie činnosti ADT Stack.
    Poznámka: Dôkladne preštudujte dodaný kód. V prípade nejasností sa s konkrétnou otázkou obráťte na cvičiaceho.
  4. Doplnenie implementácie.
    Úloha: Pridajte podporu operácie Push pre vkladanie prvkov do zásobníka.
    Prototyp operácie Push (stackl.h):
    void Push( TElement X, Stack S );
    
    Úloha: Pridajte podporu operácie PrintStack, ktorá vypíše obsah zásobníka, bez jeho modifikácie.
    Prototyp operácie PrintStack:
    void PrintStack( Stack S );
    
    Poznámka: Pre overenie činnosti operácie doplňte aj modul pre testovanie.
  5. Implementácia ADT Queue (pomocou poľa).
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Pripravený archív obsahuje tieto súbory:
    • fatal.h - definičný modul pre ošetrenie chýb.
    • queue.h - definičný modul ADT Queue. Obsahuje definície údajových typov a prototypov operácií.
    • queue.c - implementačný modul ADT Queue. Definícia frontu (štruktúra QueueRecord), implementácia operácií.
    • test.c - modul pre testovanie činnosti ADT Queue.
    Operácie pre ADT Queue:
    • IsEmpty - test, či front je prázdny.
    • IsFull - test, či front je plný.
    • CreateQueue - vytvorí front, alokuje potrebnú pamäť.
    • DisposeQueue - odstráni front, uvoľní pamäť.
    • MakeEmpty - vyprázdni front.
    • Enqueue - vloží prvok na koniec frontu.
    • Front - vráti prvok zo začiatku frontu (doplniť).
    • Dequeue - odoberie prvok zo začiatku frontu (doplniť).
    • FrontAndDequeue - vráti a odoberie prvok (doplniť).
    Poznámka: Dôkladne preštudujte dodaný kód. V prípade nejasností sa s konkrétnou otázkou obráťte na cvičiaceho.

    Príklad: Vizualizácia činnosti ADT Queue.

  6. Doplnenie implementácie.
    Úloha: Pridajte podporu operácií Front, Dequeue, FrontAndDequeue.
    Prototypy operácií:
    			
    TElement Front( Queue Q );
    void Dequeue( Queue Q );
    TElement FrontAndDequeue( Queue Q );
    
    Úloha: Pridajte podporu operácie PrintQueue, ktorá vypíše obsah frontu, bez jeho modifikácie.
    Prototyp operácie PrintQueue:
    void PrintQueue( Queue Q );
    
    Poznámka: Pre overenie činnosti operácie doplňte aj modul pre testovanie.
    Poznámka: Odstráňte z disku vami vytvorené projekty a súbory. Zanechajte vývojové prostredie v pôvodnom stave.
comments powered by Disqus