Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

22.1.2 Etsiminen taulukkoon

Toinen mahdollisuus etsimiseen on tallettaa taulukkoon kukin löytynyt ehdot täyttävä tietue. Määrittelemme tyypin

jarjestys.h - taulukko löytyneistä

	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.size(); i++)
	  kerho- >anna_jasen(etsi[i]).tulosta(cout) 

Käytännössä nykyisin taulukkona kannattaa käyttää STL:n vector-luokkaa.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys