05_opakovani_iteratory_ADT
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Iterátory – for – lineární vázaný seznam
struct Tstack {
struct TStackNode *iTop;
}
struct TStackNode {
struct TStackNode *iNext;
TStackElement iValue;
}
struct TStackIterator {
const struct TStack *iStack;
struct TStackNode *iActual;
}
iterátor = iterátor_begin ( )
//vytvoří nový objekt
iterátor_valid ( iterátor )
//došli jsme na konec?
iterátor_next ( iterátor )
//přejdi na další
iterátor_aktuální_hodnota ( iterátor )
//vrátí aktuální hodnotu
Iterátory - while
while ( není_prázdný ( seznam->další_prvek ) )
{
vypiš ( získej_další_prvek ( seznam ) );
}
Iterátory - foreach
foreach ( aktuální_hodnota in seznam )
{
vypiš (aktuální_hodnota );
}
Abstraktní datové typy
• Typ dat
• Definované chování
• Nezávislost na implementaci
• Možnost uložit různé typy dat
• Zapouzdření (často struct)
• Práce s ADT
• Programátorská/autorská
• Uživatelská
• Např. množina:
• Realizace
• Pole
• Lineární seznam
• Strom
• Vždy obsahuje funkce pro:
• Vložení prvku
• Vybrání prvku
• …a další
ADT – obecné funkce
• compare – porovnání zda jsou proměnné stejné
• print, show – výstup v „lidské“ formě
• create – vytvoření nové proměnné
• initialize – nastavení (nově vytvořené) proměnné do
základního stavu
• copy – zkopírování dat z jedné proměnné do druhé
• clone – vytvoří novou proměnnou (create) a
inicializuje ji daty z jiné (copy)
• free, destroy – korektní ukončení proměnné
• empty – zjistí, zda jsou data
• size – velikost, počet prvků
ADT – přehled
• zásobník
• fronta (prioritní, obousměrná)
• seznam
• množina / multimnožina
• asociativní pole
• strom
• hašovací tabulka
• řetězec
Zásobník (Stack)
• LIFO – Last In First Out
• push – vložení prvku
• pop – vybrání posledního vloženého prvku (nemusí
být vrácen ale pouze zrušen)
• peek/top – zpřístupnění posledního vloženého
prvku bez jeho vyjmutí