22.1 Etsiminen
Etsimistä
voidaan suorittaa monella tavalla. Mikäli tietorakenne ei tarjoa parempaa
vaihtoehtoa, ei ole muuta mahdollisuutta kuin peräkkäishaku.
Järjestetystä taulukosta pystyttiin hakemaan
binäärihaulla. Puumaisesta rakenteesta voidaan hakea puun
ominaisuuksia käyttäen. Joskus voidaan tehdä avuksi
hakemistoja, jotka ohjaavat haun suurinpiirtein oikealle paikalleen, josta
sitten jatketaan jollakin toisella hakumenetelmällä.
C-
kielen kirjastosta löytyy funktio bsearch, joka etsii
lajitellusta aineistosta binäärihaulla ja palauttaa NULL
mikäli ei löydy ja muuten palauttaa osoittimen taulukon
löytyneeseen alkioon. Funktion käyttö on vastaava kuin
myöhemmin esiteltävän qsort - funktion
käyttö, joten emme tässä puutu siihen enempää.
Kerhorekisterissä tietorakenne on varsin alkeellinen, eikä sitä
ole ainakaan toistaiseksi edes järjestetty. Siis tietyn jäsenen
etsiminen on suoritettava raakana peräkkäishakuna.
- Kirjoita metodi etsi_nimi, joka etsii jäsenistöstä
ensimmäisen henkilön, jolla on TÄSMÄLLEEN parametrina
annettu nimi. Funktio palauttaa nimessään löytöpaikan
indeksin ja - 1 jollei löydy.
- Voitaisiinko metodia käyttää apuna lisäyksessä
tarkistamaan onko jäsen jo ennestään tiedostossa?
- Voitaisiinko metodia käyttää apuna korjaamisessa
tarkistamaan onko nimi muuttunut sellaiseksi, joka on jo ennestään
tiedostossa?