Implementierung der Hash -Tabelle in C ++

Implementierung der Hash -Tabelle in C ++
Wenn Sie jemals in einer Python-Umgebung gearbeitet haben, müssen Sie von der Verwendung des Objekts „Wörterbuchs“ gewusst haben, das ein Schlüsselwertpaar darin enthält. Genau wie Wörterbücher entwickelte C ++ das Konzept des Schlüsselwertpaares. Dieses Paar wird in der Datenstruktur -Hash -Tabelle von C gespeichert++. Die Datenstruktur -Hash -Tabelle verwendet die Hash -Funktion, um den Array -Index zu berechnen, um Werte mithilfe von Indizes in die Tabelle einzufügen und sie auch durchzuführen.

Innerhalb dieses Handbuchs diskutieren wir die Verwendung von Methoden zum Erstellen, Hinzufügen, Löschen, Suchwerten aus den Hash -Tabellen mit einigen seiner Funktionen.

Beginnen wir mit der Anmeldung von Linux. Erstellen Sie eine C ++-Datei mit der Anweisung "Touch" in der Shell und verwenden Sie alle verfügbaren integrierten Editors von Ihrem Linux-System, um sie zu öffnen (i.e. Gnu nano).

Beispiel: Hash -Tabelle

Sie sehen, dass die leere Datei auf Ihrem Linux -Terminalbildschirm geöffnet ist. Innerhalb dieser Datei müssen wir einige der wichtigsten und notwendigen Bibliotheken von C ++ aufnehmen, um unseren Code ausführbar zu machen, wenn wir verschiedene Konzepte verwenden.

Wir haben also den „iOstream“ für die Eingabe- und Ausgabeverbrauch im Skript über die CIN- und Cout -Objekte hinzugefügt. Die String -Bibliothek wurde verwendet, um Stringwerte in unserem Code zu verwenden. Die Bibliothek „CSTDLIB“ und „CSTDIO“ wurde verwendet, um die Standardcharakter- und Eingangswerte für die Verwendung von Hash -Tabellen zu erhalten. Bevor wir eine Funktion oder Klasse verwenden, haben wir im Code einen Standard „Namespace“ deklariert und danach haben wir eine konstante Ganzzahlvariable „T_S“ für die Hash -Tabellengröße initialisiert, um 200 Datensätze zu erhalten.

Die Klassen-Hashtable-Inentrie ist hier, um den Wert des Schlüsselwertpaares einer Tabelle zu initialisieren, indem der Wert als Eingabe vom Benutzer abgerufen wird. Die Konstruktorfunktion hashtableEntry () wird dafür verwendet.

Hier kommt die andere Klasse "HashMapier", die ein privates Zeigerobjekt "TB" für die Klasse "HashtableSery" erklärt,.

Die Erstellung eines Objekts „Hash“ in der Haupt- () -Funktion für Klassenhashmapsable, die erste Funktion, die ausgeführt wird, ist die Konstruktionsfunktion „HashMapierbar“. Dieser Konstruktor wird verwendet, um die Tabelle der Schlüsselwertepaare mit der Größe "t_s" i zu konstruieren. I.e. 200.

Um eine Schlüsselwertetabelle mit Größe 200 zu erstellen, verwenden wir die „für“ -Schloop bis zur Größe 200 initialisieren jeden Index zu Null.

Diese Funktion berechnet den Modul der Schlüssel "A" und der Tabellengröße "T_S" und gibt es zurück.

Wenn der Benutzer Option '1' auswählt, wird die Funktion „Eingabe“ ausgeführt, wenn das Schlüsselwertpaar vom Benutzer abgerufen wird. Die Funktion „Hashfunc“ wird aufgerufen, indem der Wert "A" an ihn weitergegeben wird. Der zurückgegebene Modul wird auf die H -Variable „H“ gespeichert. Dieses „H“ wird als Indexnummer für Tabelle „TB“ innerhalb der WHE -Schleife verwendet.

Wenn der spezifische Indexwert einer Tabelle nicht null ist und der Tabellenindex „H“ für Schlüssel „A“ nicht gleich dem Schlüssel „A“ ist, wird er erneut als Hashfunc () bezeichnet, um den Modul zu berechnen und das Ergebnis zu speichern “zu“ zu speichern “ H". Wenn der spezifische Index der Tabelle nicht null ist, löschen wir diesen bestimmten Wert aus der Tabelle und generieren einen neuen Schlüsselwerteintrag am spezifischen Index.

Die Funktion von SearchKey () nimmt den Schlüssel an, überprüfen Sie den Modul und suchen Sie nach dem Wert im Tabellenindex. Wenn der Wert am Index „H“ null ist, gibt er -1 zurück, da der Wert „B“ eines bestimmten Index „H“ aus der Tabelle aus der Tabelle zurückgegeben hat.

Die Funktion delete () übernimmt den Schlüssel und den spezifischen Wert für diesen Schlüssel. Löschen Sie den Wert, wenn der angegebene Index nicht leer ist, und zeigen Sie die Erfolgsnachricht mit der Cout -Anweisung an.

Der Destruktor wird verwendet, um den gesamten Hash -Tisch zu löschen.

Nach dem Start der Main () -Methode haben wir ein Objekt „Hash“ für den Klassenhashmapsable erstellt. Aufgrund der Objektbildung wird der Konstruktor aufgerufen und eine Tabelle erstellt. Dann haben wir 2 Ganzzahlvariablen A, B und C initialisiert. Wir haben die Menüdarstellung verwendet, damit ein Benutzer eine Tabelle erstellt, einfügen, löschen und Datensätze auswählen können, um eine Option auszuwählen.

Die while () Schleife wird also weiter ausgeführt, bis der Benutzer beendet ist. Wir haben Cout -Standardausgabeanweisungen verwendet, um ein Menü i zu erstellen i.e. Wählen Sie 1, um einen Wert einzugeben, 2 zu suchen, 3 zu löschen und 4 bis zum Beenden. Ein Benutzer wurde gebeten, eine Option auszuwählen, und eine CIN -Anweisung wird verwendet, um Eingaben (1,2,3,4) in einer Variablen 'C' vom Benutzer zu erhalten.

Jetzt kommt die Switch -Anweisung mit der Variablen „C“ als Optionswert, um entsprechend zu handeln.

Wenn der Benutzer nun 1 als Option gedrückt hat, wird Fall 1 eines Switchs ausgeführt. Es werden einige Cout-Anweisungen ausgeführt und Sie aufgefordert, zuerst den Schlüssel und dann den Paarwert für einen bestimmten Schlüssel mithilfe von CIN-Anweisung und das Speichern von Schlüsselwerteingaben in „A“ und „B“ -Variablen einzugeben. Die Funktion „Eingabe“ wird unter Verwendung eines „Hash“ -Objekts aufgerufen, und die Variable "A" wird „B“ an sie übergeben.

Wenn ein Benutzer 2 auswählt, wird Fall 2 ausgeführt und bittet einen Benutzer, einen Schlüssel oder eine Suche einzugeben. Der „CIN“ erhält einen Schlüssel vom Benutzer, um die Variable „A“ in die Variable einzulegen. In der Anweisung "if" wird die Methode "SearchKey ()" mithilfe des "Hash" -Objekts aufgerufen.

Wenn wir keinen Schlüssel aus der Tabelle i finden.e. "-1" zeigen wir eine Meldung "Kein Wert bei Key A" an. Andernfalls werden wir den Schlüssel und seinen spezifischen Wert anstellen, der von der Funktion „Searchkey“ zurückgegeben wird.

Bei der Auswahl von Option 3 wird der Benutzer aufgefordert, den Schlüssel einzugeben, um ihn aus der Tabelle zu löschen. Die Funktion "delete ()" wird ausgeführt.

Wenn der Benutzer Option 4 auswählt, wird das Programm beendet.

Jetzt ist es an der Zeit, diesen Code mit Ubuntus "G ++" -Special Compiler für C ++ - Dateien zu kompilieren.

Die Zusammenstellung war erfolgreich und wir haben sie mit dem ausgeführt./A.OUT ”Abfrage. Das 4 -Optionsmenü wurde angezeigt und der Benutzer wurde gebeten, seine Wahl einzugeben (1,2,3,4). Der Benutzer hat 1 hinzugefügt, um den Wert in die Hash -Tabelle einzufügen. Der Benutzer hat den Schlüssel und seinen Wert für die Tabelle eingegeben. Dieser Datensatz wurde erfolgreich eingefügt und das Menü wurde erneut angezeigt.

Der Benutzer hat "2" als Option zur Suche nach dem spezifischen Schlüsselwert eingegeben. Im Gegenzug haben wir den Wert „14“ für Key 1 in der Hash -Tabelle erhalten. Das Optionsmenü wird erneut angezeigt.

Dieses Mal wählt der Benutzer Option 3 aus, um den bereits gehaltenen Wert aus der Hash -Tabelle mit seinem Schlüssel zu löschen. Daher wurde der Benutzer gebeten, den Schlüssel einzugeben, für den Sie den Wert löschen möchten (i.e. 1). Das System zeigt die Nachricht an, dass das spezifische Element entfernt wurde.

Auch hier wurde das Menü angezeigt. Der Benutzer hat Option 4 ausgewählt, um das Programm zu beenden.

Abschluss

In diesem Artikel dreht sich alles um die Erstellung einer Hash -Tabelle mit dem C ++ - Code im Ubuntu 20.04 System. Darüber hinaus haben wir die Methoden zum Einfügen des Schlüsselwertpaares in die Hash-Tabelle entdeckt, das spezifische Schlüsselwertpaar anzeigen, ein bestimmtes Schlüsselwertpaar löschen und den Code beenden. Wir haben das Menü verwendet, um es einfach zu machen, und die Switch -Anweisungen, um Optionen auszuwählen.