#include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
struct Node{
string data;
Node* next;
Node(){
data = "";
next = NULL;
}
};
int computeHash(string s, int m){
int p = 1000000007;
int x = 263;
unsigned long long sum = 0;
unsigned long long val = 0;
for(int i = 0; i < s.length(); i++){
val = pow(x, i);
sum = (sum + s[i] * val) % p;
}
sum = sum % m;
return sum;
}
int main(){
int buckets;
cin >> buckets;
int n;
cin >> n;
string tag;
string s;
vector< vector<string> > myStore(n);
for(int i = 0; i < n; i++){
cin >> s;
myStore.at(i).push_back(s);
cin >> tag;
myStore.at(i).push_back(tag);
}
Node** arr= new Node*[buckets];
for(int i = 0; i < n; i++){
if(!myStore[i][0].compare("add")){
s = myStore[i][1];
int hash = computeHash(s,buckets);
cout << hash << endl;
}
}
return 0;
}
Ich versuche, ein Programm zu schreiben, Hashing mit Ketten zu implementieren. Ich versuche ein Array von Knoten zu erstellen, so dass ich anhängen kann, wenn zwei Strings denselben Hash-Wert haben.Array von Knoten: Initialisierung
Aber ich habe ein Problem mit der Initialisierung von Array von Knoten. Ich dachte, die Knoten im Array würden auf NULL zeigen. Aber als ich versuchte, in gdb zu debuggen, zeigt es etwas anderes.
Kann jemand erklären, wo ich falsch bin über Kommentar zu diesem Verhalten. Warum arr 1 und arr [2] zeigen auf einen Speicherort anstelle von null. Ich habe auch versucht, den Standardkonstruktor zu entfernen, aber immer noch die gleichen Ergebnisse zu erhalten. Jede Hilfe wäre willkommen.
Haben Sie ein Problem mit Knoten ** arr nicht mit dem Vektor. – Phaneeth