Implementazione della tabella hash in C ++

Implementazione della tabella hash in C ++
Se hai mai lavorato in un ambiente Python, allora devi aver saputo sull'uso dell'oggetto "Dizionario" che contiene una coppia di valore chiave al suo interno. Proprio come i dizionari, C ++ ha inventato il concetto di coppia di valore chiave. Questa coppia verrà memorizzata nella tabella hash della struttura dei dati di C++. La tabella hash della struttura dei dati utilizzerà la funzione hash per calcolare l'indice dell'array per inserire i valori nella tabella usando gli indici e cercare anche loro.

All'interno di questa guida, discuteremo l'uso di metodi per creare, aggiungere, eliminare, valori di ricerca dalle tabelle hash usando alcune delle sue funzioni.

Cominciamo con l'accesso da Linux. Prova a creare un file C ++ utilizzando l'istruzione "Touch" nella shell e utilizza qualsiasi editor integrato disponibile dal tuo sistema Linux per aprirlo (i.e. Gnu nano).

Esempio: tabella hash

Vedrai che il file vuoto è aperto sullo schermo del terminale Linux. All'interno di questo file, dobbiamo includere alcune delle librerie principali e necessarie di C ++ per rendere eseguibile il nostro codice dopo l'uso di concetti diversi.

Quindi, abbiamo aggiunto "iostream" per l'utilizzo di input e output nello script tramite gli oggetti CIN e COUT. La libreria String è stata utilizzata per utilizzare i valori stringa nel nostro codice. La libreria "cstdlib" e "cstdio" è stata utilizzata per ottenere i valori di carattere e input standard per l'uso delle tabelle hash. Prima di utilizzare qualsiasi funzione o classe, abbiamo dichiarato uno "spazio dei nomi" standard nel codice e successivamente, abbiamo inizializzato una variabile intera costante "T_S" per la dimensione della tabella hash per ottenere 200 record.

L'hashtableEntry di classe è qui per inizializzare il valore della coppia di valore chiave di una tabella ottenendo il valore come input dall'utente. La funzione costruttore hashtableentry () sarà utilizzata per questo.

Ecco che arriva l'altra classe "hashmaptable" che dichiara un oggetto puntatore privato "TB" per la classe "hashtableentry".

La creazione di un oggetto "hash" nella funzione principale () per hashmaptable di classe, la prima funzione da eseguire, è la funzione di costruzione "hashmaptable". Questo costruttore viene utilizzato per costruire la tabella del tipo di coppia di valore chiave di dimensioni "t_s" i.e. 200.

Per costruire una tabella del valore chiave della dimensione 200, abbiamo utilizzato il ciclo "per" fino alla dimensione 200 inizializza ogni indice su NULL.

Questa funzione calcolerà il modulo del tasto "A" e dimensione della tabella "T_S" e lo restituirà.

Se l'utente sceglie l'opzione "1", la funzione "input" verrà eseguita al momento dell'ottenimento della coppia di valore chiave dall'utente. La funzione "hashfunc" verrà chiamata passando il valore "a" ad esso. Il modulo restituito verrà salvato nella variabile "H". Questa "H" verrà utilizzata come numero di indice per la tabella "TB" entro il ciclo while.

Se il valore specifico dell'indice di una tabella non è nullo e l'indice della tabella "H" per la chiave "a" non è uguale alla chiave "a", verrà nuovamente chiamato hashfunc () per calcolare il modulo e salvare il risultato in " H". Se l'indice specifico della tabella non è nullo, elimineremo quel particolare valore dalla tabella e genereremo una nuova voce di valore chiave all'indice specifico.

La funzione SearchKey () prenderà la chiave, controllerà il modulo e cerca il valore nell'indice della tabella. Se il valore nell'indice "h" è nullo, restituirà altrimenti -1 restituito il valore "b" di un indice specifico "h" dalla tabella.

La funzione delete () prenderà la chiave e il valore specifico per questa chiave. Elimina il valore se l'indice specificato non è vuoto e visualizza il messaggio di successo utilizzando l'istruzione Cout.

Il distruttore viene utilizzato per eliminare l'intera tabella hash.

Dopo aver avviato il metodo principale (), abbiamo creato un oggetto "hash" per la classe hashmaptable. A causa della formazione di oggetti, verrà chiamato il costruttore e verrà creata una tabella. Quindi, abbiamo inizializzato 2 variabili interi a, b e c. Abbiamo utilizzato la rappresentazione del menu per un utente per creare una tabella, inserire, eliminare e visualizzare i record scegliendo qualche opzione.

Quindi, il ciclo while () continuerà ad eseguire fino a quando l'utente non esce. Abbiamo utilizzato le istruzioni di output standard Cout per creare un menu i.e. Scegli 1 per immettere un valore, 2 da cercare, 3 da eliminare e 4 per uscire. A un utente è stato chiesto di scegliere un'opzione e un'istruzione CINA viene utilizzata per ottenere input (1,2,3,4) in una variabile "C" dall'utente.

Ora, ecco l'istruzione Switch usando la variabile "C" come valore di opzione per agire di conseguenza.

Ora, se l'utente ha premuto 1 come opzione, il caso 1 di uno switch verrà eseguito. Eseguirà alcune istruzioni Cout e ti chiederà di inserire prima la chiave e quindi il valore della coppia per una chiave particolare usando l'istruzione CIN e il salvataggio dell'input del valore chiave nelle variabili "A" e "B". La funzione "input" verrà chiamata usando un oggetto "hash" e la variabile "a", "b" verrà passata ad esso.

Se un utente sceglie 2, il caso 2 verrà eseguito e chiederà a un utente di inserire una chiave o cercare. Il "CIN" riceverà una chiave dall'utente da inserire nella variabile "A". L'istruzione "if" chiamerà il metodo "SearchKey ()" usando l'oggetto "hash".

Se non troviamo alcuna chiave dalla tabella I.e. "-1", visualizzeremo un messaggio "Nessun valore trovato nella chiave A". Altrimenti, visualizzeremo la chiave e il suo valore specifico restituito dalla funzione "SearchKey".

Nella scelta dell'opzione 3, all'utente verrà chiesto di inserire la chiave per eliminarla dalla tabella. Verrà eseguita la funzione "delete ()".

Se l'utente sceglie l'opzione 4, il programma uscirà.

Ora, è tempo di compilare questo codice con il compilatore speciale "G ++" di Ubuntu per i file C ++.

La compilation ha avuto successo e l'abbiamo eseguita con il "./UN.fuori ”query. Il menu delle 4 opzioni è stato visualizzato e all'utente è stato chiesto di inserire la sua scelta (1,2,3,4). L'utente ha aggiunto 1 per inserire il valore nella tabella hash. L'utente ha inserito la chiave e il suo valore per la tabella. Questo record è stato inserito con successo e il menu è stato nuovamente visualizzato.

L'utente ha inserito "2" come opzione per cercare il valore della chiave specifica. In cambio, abbiamo ottenuto il valore "14" per la chiave 1 nella tabella hash. Il menu delle opzioni verrà nuovamente visualizzato.

Questa volta, l'utente sceglie l'opzione 3 per eliminare il valore già trattenuto dalla tabella hash utilizzando la sua chiave. Quindi, all'utente è stato chiesto di inserire la chiave per la quale si desidera eliminare il valore (i.e. 1). Il sistema visualizzerà il messaggio che l'elemento specifico è stato rimosso.

Ancora una volta, il menu è stato visualizzato. L'utente ha scelto l'opzione 4 per uscire dal programma.

Conclusione

Questo articolo parla della creazione di una tabella hash usando il codice C ++ in Ubuntu 20.04 Sistema. Insieme a ciò, abbiamo anche scoperto i metodi per inserire la coppia di valori chiave nella tabella hash, visualizzare la coppia specifica del valore chiave, eliminare una coppia specifica del valore chiave ed uscire dal codice. Abbiamo usato il menu per renderlo semplice e le istruzioni di switch per scegliere le opzioni.