Zgoščevalna tabela v C++

Zgoscevalna Tabela V C



Zgoščevalna tabela je znana tudi po besedi 'Hasp map' v programiranju. V programskem jeziku C++ so zgoščevalne tabele same po sebi podatkovna struktura, ki se večinoma uporablja za shranjevanje ključev matrike in njihovih vrednosti v parih. Za izračun indeksa v nizu rež, kjer so shranjene vrednosti, je treba uporabiti algoritem zgoščevanja, vsak ključ pa mora biti ločen. Zgoščevalna tabela se uporablja za dodajanje, odstranjevanje in pridobivanje elementov na podlagi njihovih različnih vrednosti. V tem članku bomo razumeli koncept razpršilne tabele s pomočjo ustreznih primerov.

Funkcija zgoščevanja

V tem razdelku bomo razpravljali o zgoščevalni funkciji, ki pomaga izvesti zgoščevalno kodo povezanega ključa podatkovne postavke v podatkovni strukturi, kot je navedeno v naslednjem:

Int hashitem ( int ključ )
{
vrnitev ključ % velikost mize ;
}

Postopek izvajanja indeksa matrike se imenuje zgoščevanje. Včasih se izvede ista vrsta kode za generiranje istega indeksa z uporabo istih ključev, imenovanih trki, ki se obravnavajo z drugačnim veriženjem (ustvarjanje povezanih seznamov) in izvajanjem odprtih strategij naslavljanja.







Delovanje zgoščene tabele v C++

Kazalci na realne vrednosti so shranjeni v zgoščeni tabeli. Uporablja ključ za iskanje indeksa matrike, pri kateri je treba vrednosti glede na ključe shraniti na želeno mesto v matriki. Vzeli smo zgoščeno tabelo z velikostjo 10, kot je navedeno v nadaljevanju:



0 1 2 3 4 5 6 7 8 9

Vzemimo naključno vse podatke glede na različne ključe in shranimo te ključe v zgoščeno tabelo tako, da samo izračunamo indeks. Podatki so torej shranjeni glede na ključe v izračunanem indeksu s pomočjo zgoščevalne funkcije. Recimo, da vzamemo podatke = {14,25,42,55,63,84} in ključe = [ 15,9,5,25,66,75 ].



Izračunajte indeks teh podatkov s funkcijo zgoščevanja. Vrednost indeksa je navedena v naslednjem:





Ključ petnajst 9 29 43 66 71
Izračunajte indeks 15 %10 = 5 9%10=0 29 %10=9 43 %10=3 66 %10=6 71 %10=1
podatki 14 25 42 55 63 84

Ko ustvarite indeks matrike, postavite podatke proti ključu na natančen indeks dane matrike, kot je opisano prej.

25 84 55 14 63 42
0 1 2 3 4 5 6 7 8 9

Po tem lahko vidimo, da pride do trka, če imata dva ali več ključev enako zgoščeno kodo, kar ima za posledico enak indeks elementov v matriki. Imamo eno rešitev, da se izognemo možnostim trčenja: izbiro dobre metode zgoščevanja in izvajanje natančnih strategij.



Zdaj pa razpravljajmo o različnih tehnikah izvajanja s pomočjo ustreznih primerov.

Primer: dodajte podatke v zgoščevalno tabelo z uporabo odprte tehnike zgoščevanja

V tem primeru uporabimo tehniko implementacije, kot je Open Hashing, da preprečimo kolizijo v tabeli zgoščevanja. Pri odprtem zgoščevanju ali veriženju ustvarimo povezan seznam, da verižimo vrednosti zgoščevalne tabele. Delček kode tega primera je priložen v nadaljevanju, ki opisuje tehniko odprtega zgoščevanja:

#include
#include
razred HashTable {
zasebno :
statična konst int tableSize = 10 ;
std :: seznam < int > tableHas [ tableSize ] ;
int hashFunc ( int ključ ) {
vrnitev ključ % tableSize ;
}
javnosti :
praznina vstavi ( int ključ ) {
int kazalo = hashFunc ( ključ ) ;
tableHas [ kazalo ] . porini nazaj ( ključ ) ;
}
praznina viewTable ( ) {
za ( int jaz = 0 ; jaz < tableSize ; ++ jaz ) {
std :: cout << '[' << jaz << ']' ;
za ( avto to = tableHas [ jaz ] . začeti ( ) ; to ! = tableHas [ jaz ] . konec ( ) ; ++ to ) {
std :: cout << ' -> ' << * to ;
}
std :: cout << std :: konec ;
}
}
} ;
int glavni ( ) {
HashTable hasTable ;
hasTable. vstavi ( petnajst ) ;
hasTable. vstavi ( 33 ) ;
hasTable. vstavi ( 23 ) ;
hasTable. vstavi ( 65 ) ;
hasTable. vstavi ( 3 ) ;
hasTable. viewTable ( ) ;
vrnitev 0 ;
}

To je zelo zanimiv primer: sestavimo povezan seznam in vstavimo podatke v zgoščeno tabelo. Najprej na začetku programa določimo knjižnice. The < seznam > knjižnica se uporablja za izvedbo povezanega seznama. Po tem zgradimo razred z imenom »HashTable« in ustvarimo atribute razreda, ki so zasebni kot velikost tabele in niz tabele s ključno besedo »private:«. Ne pozabite, da zasebni atributi niso uporabni zunaj razreda. Tukaj vzamemo velikost tabele kot '10'. S tem inicializiramo metodo zgoščevanja in izračunamo indeks zgoščene tabele. V zgoščevalni funkciji posredujemo ključ in velikost zgoščevalne tabele.

Izdelamo nekaj zahtevanih funkcij in te funkcije objavimo v razredu. Ne pozabite, da so javne funkcije uporabne zunaj razreda kjer koli. Za začetek javnega dela razreda uporabljamo ključno besedo »public:«. . Ker želimo v razpršilno tabelo dodati nove elemente, ustvarimo funkcijo z imenom »InsertHash« s ključem kot argumentom funkcije. V funkciji “insert” inicializiramo indeksno spremenljivko. Zgoščevalno funkcijo posredujemo indeksni spremenljivki. Po tem posredujte indeksno spremenljivko povezanemu seznamu tableHas[] z uporabo metode »push«, da vstavite element v tabelo.

Po tem zgradimo funkcijo »viewHashTab« za prikaz zgoščene tabele za ogled na novo vstavljenih podatkov. V tej funkciji uporabimo zanko 'za', ki išče vrednosti do konca zgoščene tabele. Zagotovite, da so vrednosti shranjene v istem indeksu, kot so razvite s funkcijo zgoščevanja. V zanki posredujemo vrednosti na njihovem ustreznem indeksu in tukaj zaključimo razred. V funkciji “main” vzamemo objekt razreda z imenom “hasTable”. S pomočjo tega predmeta razreda lahko dostopamo do metode vstavljanja s posredovanjem ključa v metodi. Ključ, ki smo ga posredovali v funkciji »main«, je izračunan v funkciji »insert«, ki vrne položaj indeksa v zgoščeni tabeli. Zgoščeno tabelo smo prikazali s klicem funkcije “view” s pomočjo predmeta “Class”.

Izhod te kode je priložen v naslednjem:

Kot lahko vidimo, je zgoščena tabela uspešno ustvarjena z uporabo povezanega seznama v C++. Odprto veriženje se uporablja za izogibanje koliziji istega indeksa.

Zaključek

Na koncu smo ugotovili, da je zgoščevalna tabela najpogostejša tehnika za shranjevanje in pridobivanje ključev s pari vrednosti za učinkovito obdelavo ogromnih količin podatkov. Možnosti kolizije v zgoščevalni tabeli so zelo visoke, kar uniči podatke in njihovo shranjevanje. To kolizijo lahko premagamo z različnimi tehnikami upravljanja zgoščene tabele. Z razvojem zgoščevalne tabele v C++ lahko razvijalci povečajo zmogljivost z uporabo najprimernejše tehnike za shranjevanje podatkov v zgoščevalno tabelo. Upamo, da vam bo ta članek pomagal razumeti zgoščevalno tabelo.