Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Mohli byste mi pomoci s touto úlohou?
1) Reprezentace množiny pomocí spojového seznamu
Pomocí spojových seznamů lze reprezentovat množiny čísel. Provádí se to zpravidla tak, že dané
množině odpovídá spojový seznam obsahující všechny prvky množiny, který je vzestupně
setříděný. Např. množině {4, 2, 0, 3, 9} odpovídá seznam 0, 2, 3, 4, 9. Protože seznam reprezentuje
množinu, musí v něm být každý prvek zastoupený nejvýše jednou. Operace Prunik, Sjednoceni a
Rozdil jsou nedestruktivní (tzn. že výsledkem je zcela nový seznam, nikoliv seznam tvořený uzly
vstupních seznamů a vstupní seznamy zůstanou beze změny) a navíc při implementaci se NESMÍ
použít žádné cykly (for, while, repeat until ani pomocí goto), tzn. že všechny operace je NUTNÉ
řešit pomocí rekurze.
Doplňte těla následujících procedur:
procedure VlozPrvek(var zacatek : puzel; prvek : integer);
{ vloží prvek do množiny }
function ExistujePrvek(zacatek : puzel; prvek : integer) : boolean;
{ vrátí true, pokud se prvek nachází v množině, jinak false }
procedure OdeberPrvek(var zacatek : puzel; prvek : integer);
{ odebere prvek z množiny }
function Sjednoceni(zacatek1, zacatek2 : puzel) : pTUzel;
{ vrátí ukazatel na první prvek seznamu, který reprezentuje
sjednocení množin reprezentovaných seznamem 1 a 2, seznamy 1 a 2 by
po operaci měly zůstat neporušené }
function Prunik(zacatek1, zacatek2 : puzel) : pTUzel;
{ vrátí ukazatel na první prvek seznamu, který reprezentuje průnik
množin reprezentovaných seznamem 1 a 2, seznamy 1 a 2 by po operaci
měly zůstat neporušené }
function Rozdil(zacatek1, zacatek2 : puzel) : pTUzel;
{ odečte od množiny reprezentované seznamem 1 množinu
reprezentovanou seznamem 2 a vrátí ukazatel na první prvek
výsledného seznamu, seznamy 1 a 2 by po operaci měly zůstat
neporušené }
procedure PrevedNaMnozinu(var zacatek : puzel);
{ převede obecný spojový seznam na množinu, tj. Že seznam setřídí podle
velikosti a smaže prvky, které v něm jsou vícekrát }
Offline
↑ SweetNelli:
Tak resit ti to tady urcite nebudu, ale napovim ti jak bych to resil ja...
Seznam mas serazenej, tim lip...
Tak treba vkladani prvku...mas tam ukazatel na zacatek seznamu...
Takze kdyz je vkladany prvek mensi nez prvek na kterej si dostal ukazatel nebo je ukazatel null (nebo jak se tomu v pascalu rika) tak ho tam vlozis a konec, kdyz ne tak volas funkci znova s ukazatelem na dalsi prvek a smitec
Ostatni funkce by staly na stejnym postupu
Offline
Stránky: 1