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)