class cJarjestys { /* Luokka jonka avulla voidaan pitää eri järjestyksiä. */ int max_koko; /* Indeksitaulukon maksimikoko. */ int indekseja; /* Taulukosta nyt käytetty indekseja. */ int *indeksit /* Osoitin indeksitaulukkoon (dynaaminen). */ ... };
Jos seuraavasta aineistosta etsittäisiin vaikkapa hakuehdolla nimi=="*k*"
**jasenet | o | cJarjestys +------+------+ cJasen etsi +---+ | +--------------+ max_koko | 7 | v |Kassinen Katto| indekseja| 2 | +----------+ |Katto | *indeksit| o | +--->jasenet[0] | o-----+-------------->|3452 | +-+-+ | +----------| |... | | | jasenet[1] | o-----+--------+ +--------------+ v | +----------| | +-------------+ +---+ | +->jasenet[2] | o-----+------+ | |Susi Sepe | 0 | 0 +--+ | +----------| | +----->|Takametsä | +---| | ... | | | |- | 1 | 2 +----+ +----------| | |... | +---| | | | +-------------+ 2 | ? | +----------| | +-------------+ +---| | | +------->|Ankka Aku | 3 | ? | +----------| |Ankkalinna | +---| | | |1234 | 4 | ? | +----------| |... | +---| | | +-------------+ 5 | ? | +----------+ +---| osoitintaulukko henkilöihin 6 | ? | +---| 7 | ? | indeksitaulukko löytyneisiin +---+
löytyisi jasenet[0] ja jasenet[2], jotka täyttävät hakuehdon. Tällöin etsimisaliohjelma palauttaisi tämän tiedon seuraavasti:
cJarjestys etsi
+-----+ max_koko | 7 | 0 1 2 3 4 5 6 indekseja| 2 | +--------------------+ *indeksit | o--+------>| 0| 2| ?| ?| ?| ?| ?| +-----+ +--------------------+
Nyt tietäisimme heti, että meillä on kaksi löytynyttä, joten löytyneet voitaisiin tulostaa:
for (i=0; i<etsi.Indekseja(); i++) Kerho- >Jasenet()- >anna(etsi.anna(i)).tulosta(cout)