Tietorakenteet, syksy 2009
Jätettävä tarkastettavaksi viimeistään 6.11.2009
Käytä mallina List-luokkaa ja tee luokka DList, jossa lista on ketjutettu kahteen suuntaan rengaslistaksi. Lista on järjestetty, joten se voisi olla sorted-listin aliluokka (voit tehdä sen myös aivan omaksi luokakseen ja kopioida pohjaksi List-luokan)
Toteuta DListille seuraavat operaatiot. Listaan siis sijoitetaan kokonaislukuja, jotka ovat listassa järjestyksessä.
Insert( int x) -
lisää luvun x listaan
Find(int x) - etsii luvun x
listasta
Delete(int x) - poistaa
luvun x listasta.
Print() tulostaa listan.
Metodisi voivat olla tietysti muunkin nimisiä.
Luennoilla on esitelty
BST- binaarinen hakupuu luokka ja sen metodit. Muunna luokkaa siten, että voit
sijoittaa puuhun olioita, joissa on kaksi komponenttia
avain - arvo, jonka mukaan oliot asettuvat järjestykseen puuhun
tieto - valitse haluamasi tieto tietokentäksi (esim. nimi, numero, tai mikä
tahansa)
Puuhun sijoitetaan
siis olioita joiden sisältö on (avain, arvo) siten, että ne järjestyvät puussa
avainarvonsa mukaisesti - siis vasemmassa alipuussa ovat oliot, joiden
avain-tieto on pienempi kuin juuren ja oikeassa alipuussa oliot, joiden avaintieto
on suurempi kuin juuren avain.
Käyttöliittymän on
sellainen, että kun käyttäjä haluaa lisätä olion puuhun, hänen on annettava
näppäimistöltä sekä avain, että tieto.
Vihje: Kun puuhun
sijoitettaessa joudutaan vertailemaan onko avain suurempi tai pienempi kuin
juuri, kannattaa tehdä tälle sisältöluokalle metodi (gt
(greater than), tai lt (less than)).
Siis kun bst - luokassa on solmuluokka (treenode), niin nyt treedoden
sisältönä ei ole kokonaisluku vaan olio luokasta (esim. solmuluokka)
class solmuluokka;
int avain;
mytype tieto;
public boolean gt(solmuluokka s) { vertaa onko this:in
avain pienempi kuin s:n }
Kun olet sijoittanut
puuhun alkioita, saat tulostettua koko puun avainten mukaan
suuruusjärjestyksessä toteuttamalla rekursiivisen sisäjärjestyksessä
läpikäynnin (ks. luennot).
Ei ole tarpeen toteuttaa
poisto-metodia puullesi, vaan siis
- olion (avain, tieto) lisäys binääriseen hakupuuhun
- puun tulostaminen järjestyksessä.
Näin voidaan bst:tä käyttää tehokkaana lajittelumenetelmänä.