Obousměrně vázaný seznam
Jednosměrně vázaným seznamem rozumíme množinu prvků (typu struktura), které kromě informací o hodnotách vážících se k jednotlivým strukturám, nesou i informaci o následujícím prvku – realizovanou ukazatelem na typ stejný jako je prvek (tedy na strukturu stejného typu). Poslední prvek seznamu je takový, který nemá následující prvek – jeho ukazatel na další prvek je „NULL“. Pokud je stejný mechanizmus implementován i pro opačný směr, jedná se o obousměrně vázaný seznam
Úkol
Napište program, který bude realizovat obousměrně vázaný seznam.
Program bude obsahovat dva moduly (tři soubory - main.cpp,
seznam.h, seznam.cpp) – modul s main a modul s kódem
realizujícím vázaný seznam (implementaci seznamu). Dále bude v
projektu hlavičkový soubor definic a prototypů funkcí doplňující
soubor seznamu.
Navrhněte strukturu SPrvek vhodnou pro prvek seznamu.
Struktura (prvek seznamu) obsahuje hodnotu typu MUJTYP (definováno
pomocí direktivy #define) a ukazatel(e) pro propojování seznamu.
Ukazatele pro propojení seznamu budou ukazovat
na následující/předchozí prvek.
Algoritmy funkcí by měly
fungovat i pro prázdný seznam (ve funkcích testujte na začátku, zda
mají smysl).
Napište funkci (Push), která vloží nový
prvek na konec seznamu.
Napište funkci (Pop), která vrátí
hodnotu z konce seznamu a prvek zruší.
Napište funkci (First),
která nastaví pomocný ukazatel na první prvek.
Napište
funkci (Next), která posune pomocný ukazatel na další prvek.
Napište funkci (Top), která posune pomocný ukazatel
na poslední prvek.
Napište funkci (Count), která pomocí
funkce First a Next zjistí aktuální počet prvků v seznamu.
Napište
funkci (Print), která vytiskne seznam od posledního vloženého
prvku k prvnímu, ve formátu „pořadí v seznamu, hodnota“-
každý prvek na zvláštním řádku.
Ukažte volání funkcí a také volání pro neexistující
seznam.
Poslední změna 2012-10-19