03_seznamy_realizace
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.
jinak
Pom = Head
Dokud Pom neni prvek za kterým je rušený prvek
Pom = Next(Pom)
Ruseny = Next(Pom)
SetNext(Pom,Next(Ruseny))
SetPrev(
)
SetPrev(
)
SetNext(pom, NULL) // kvůli bezpečí při vracení; některé
algoritmy vyžadují pro zrušení
SetPrev(
)
zruš pom/ vrať pom – podle konkrétní definice (mohou být obě
verze)
Iterátory
- návrhový vzor pro procházení seznamu (též Cursor)
- oddělení implementace od přímého použití (uživatel používá seznam prostřednictvím funkcí,
které pracují s iterátorem)
- slouží k procházení kontejneru (např. procházení stromu není pro běžného uživatele
jednoduché – jak určit pořadí?)
- vytváří jednotné rozhraní pro různé implementace (seznam i strom mohou být díky
společnému interface používány stejným způsobem)
- díky pomocným proměnným může zajistit rychlejší práci (např. bude-li si pamatovat svou
polohu v lineárním seznamu, nemusí při vyhledání pozice prvku vždy začínat od počátku)
-
- spojeny s příkazem foreach, kdy postupně prochází seznam a vrací jeho prvky (begin,end)
- realizuje například: nastavení na začátek, nastavení na/za konec; zjištění zda je seznam
prázdný; zjištění zda existuje další prvek; posun na další prvek; možnost přístupu k prvku
- při manipulaci s kontejnerem (zvláště vypouštění prvků) je nutné o tom iterátor informovat
(může mít pomocné informace, které je nutné aktualizovat – první a poslední prvek, počet
prvků, aktuální prvek ...)
Poznámky:
- cyklická fronta/buffer/vyrovnávací buffer
- Realizace seznamu pomocí pole