Anonymní profil Honza – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Honza – Programujte.comAnonymní profil Honza – Programujte.com

 

Příspěvky odeslané z IP adresy 167.83.9.–

Honza
C / C++ › lineárně zřetězený seznam v C
20. 12. 2016   #214131
Honza
C / C++ › lineárně zřetězený seznam v C
20. 12. 2016   #214130

zdravím, mám zadání na zápočet ale nějak s s tím nevím rad (spíš jakým způsobem to mám dělat) :
 

Výstup je (bez úprav na schématu úpravy barevně): 1 3 5 7 9 11

Po úpravách (na schématu barevně) je výstup: 1 2 3 5 9 11. Co ukazuje modrá barva?

Prvek 7 není dostupný (takže logicky neexistuje – odpad - garbage).

Poučení: program musí fungovat i pro mezní (či „odlehlé“) situace, např. zde když je seznam prázdný.

Domácí cvičení: kromě uvedené úlohy „vypiš“ naprogramujte i funkce „vlož“ a „zruš“ (prvek nemusí v seznamu být) – viz schematicky výše. Dále naprogramuje funkci „najdi“ (prvek rovněž nemusí v seznamu být).

Problémy pro DCV:

1. Funkce „vlož“: Hodnotu je třeba dát na správné místo (tj. i jako první či poslední prvek seznamu); jak se zachovat, když už prvek v seznamu je. Jsou 2 možnosti: dát tam prvek znovu nebo oznámit tuto skutečnost a už nic neukládat. Vyberte si některou (v databázi nemůže být duplicitní primární klíč). Pokud se rozhodnete ukládat prvky opakovaně, pak doplňte systém o funkci „najdivše“, která oznámí, kolikrát je prvek v seznamu uveden.

2. Funkce„zruš“: co když zamýšlený rušený prvek v seznamu vůbec není?

3. Jaký předpokládat výstup v případě funkce „najdi“?

Řešení: buď je volný seznam veden skutečně jako seznam s indexy pro následníky, nebo je možno použít setřásacích algoritmů kdy se platné informace přesouvají „nahoru“. V obou případech je algoritmus dvoufázový, kdy v první fázi je nutno nějak „označit“ platné (nepatné jsou totiž nedostupné. Je nutno použít “g-bit“.

Hlavní program pak může postupně vyvolávat výše zmíněné funkce podle zadání obsluhy.

 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý