Cílem všech úkolů je procvičit si práci se spojovými seznamy. Pro jejich vyřešení tedy nepoužívejte jiné datové struktury (seznamy, apod.). Můžete úpravy provádět destruktivně, tedy přímo měnit prvky původního seznamu.
Pokud není uvedeno jinak, jako jeden ze vstupních parametrů dostanete první prvek seznamu a máte vrátit první prvek upraveného seznamu.
Do setřízeného seznamu vložte prvek s hodnotou x.
Otočte spojový seznam.
Ze seznamu vymaže prvek s hodnotou x (první výskyt), pokud tam je.
Ze seznamu vymaže všechny prvky s hodnotou x.
Dostanete dva setřízené spojové seznamy. Vraťte seznam, kde jsou všechny prvky obou seznamů a jsou setřízené. (Jako operace merge v merge sortu.)
Rozdělte seznam na dva seznamy. V prvním budou pouze sudé prvky, v druhém pouze liché.
Implementujte oboustrannou frontu (deque) pomocí obousměrného spojového seznamu. Operace na oboustranné frontě jsou
push_back
- přidání prvku na konec,push_front
- přidání prvku na začátek,pop_back
- odebrání prvku z konce,pop_front
- odebrání prvku ze začátku,a všechny chceme provádět s konstantní časovou složitostí.
K zamyšlení: Proč nám nestačí jednosměrný seznam?