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.
Řešení krajních stavů
- dummy nodes (sentinel nodes) prázdné prvky na začátku a na konci,
- jelikož jsou tyto prvky bez dat a tudíž se s nimi „nepracuje“ –> pro manipulaci existuje jediný
stav: manipulace s prvkem uprostřed seznamu
Realizace manipulace se seznamem pomocí:
- Ukazatel na první prvek (vždy) – head,
- ukazatel tail (většinou poslední, někdy zobecnění = některý prvek (koncová sekvence),)
- ukazatel actual – pomocný ukazatel
Kde jsou uložena data/prvky (kdo je „vlastní“, dáno předpisem seznamu)
- předání dynamické proměnné ukazatelem a vložení do seznamu – majitelem zůstává původce
- předání dynamické proměnné ukazatelem a vložení do seznamu – majitelem se stane seznam
- předání dynamické proměnné ukazatelem a vložení kopie do seznamu – majitel seznam
- předání hodnoty proměnné a vložení kopie do seznamu – majitel seznam
-
- má-li hodnotu, jedná se o interní uložení, jinak externí
- „majitel“ je zodpovědný za zrušení prvku (zvláště u předání ukazatelem)
Práce se seznamy
Head, Tail a Prvek jsou odkazy na prvky, se kterými se pracuje
Procházení seznamu
- nejjednodušší činnost (tisk, rušení celého seznamu, prohledávání, ...)
Pokud je seznam prázdný udělej ... a ukonči
Aktuální_prvek = Head
Dokud je Aktuální_prvek platný
zpracuj data/proveď činnost
Aktuální_prvek = Next(Aktuální_prvek)
Přidání prvku na začátek
Vstup – seznam, vkládaný Prvek
Pokud je seznam prázdný
Head = Prvek
SetNext(Prvek, NULL)// pro jistotu. Mělo by být inicializováno.
jinak
SetNext(Prvek,Head) // bývalý první prvek bude druhý