Einfügen Funktion von Hashtable in C

So, ich habe die Funktionen. Wie kann ich das einfügen von zahlen in die Hashtable? Ein for dass geht solange, bis die Größe der Tabelle? Ich weiß nicht, was im inneren der for, wenn es vorhanden ist.

#include <stdio.h>

//Structure
typedef struct Element {
    int key;
    int value;
} Element;

typedef struct HashTable {
    Element *table[11];
} HashTable;


//Create an empty Hash
HashTable* createHashTable() {
    HashTable *Raking = malloc(sizeof(HashTable));

    int i;
    for (i = 0; i < 11; i++) {
        Raking->table[i] = NULL;
    }
    return Raking;
}

//Insert element
void insertElement(HashTable *Raking, int key, int value) {

    int h = hashFunction(key);

    while(Raking->table[h] != NULL) {

        if(Raking->table[h]->key == key) {
            Raking->table[h]->value = value;
            break;
        }

        h = (h + 1) % 11;
    }

    if(Raking->table[h] == NULL) {
        Element *newElement = (Element*) malloc(sizeof(Element));
        newElement->key = key;
        newElement->value = value;
        Raking->table[h] = newElement;
    }
}

int main() {

    HashTable * Ranking = createHashTable();


    /** ??? **/


}

Könnte mir jemand erklären, wie das schreiben meiner main-Funktion mit diesen Strukturen? In diesem Fall bin ich die Festsetzung der Anzahl der Elemente in dieser Tabelle, richtig? (Tabelle [11]), Was könnte ich tun für die Benutzer, um zu bestimmen, die Größe der hash-Tabelle? ist es möglich? Oder sollte ich die Größe?

  • nicht hashFunction(key) wohl zu hashFunction(chave) (oder nicht chave übersetzt key in die Funktion-argument)? hat das kompilieren?
  • Es war ein übersetzungs Fehler, sorry. Bereits bearbeitet! Und Nein, nicht kompilieren, weil die main-Funktion ist noch nicht abgeschlossen.
  • es scheint, dass Sie erstellt haben, einige syntax-Fehler während der übersetzung. Bitte versuchen, Sie zu beheben. Sie konnte zudem zeigen die Umsetzung für die hash-Funktion, kann es nützlich sein.
  • Wird dies umgesetzt mit linear probing?
  • Wie, was, @TaylorFlores ? Ich lese immer, nicht gefunden Fehler in übersetzungen dieser Zeit.
  • Und @Nobilis: ich denke, ja. :c
  • Okay, wollte nur sicher gehen, dass ich verstanden habe den code 🙂 ich habe eine Antwort mit Kommentaren und änderungen an Ihrem code finden, wenn diese klargestellt hat, Ihre Missverständnisse.

InformationsquelleAutor U23r | 2013-07-19
Schreibe einen Kommentar