#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;
}
체인을 사용하여 해시를 구현하는 프로그램을 작성하려고합니다. 두 개의 문자열에 동일한 해시 값이있는 경우 추가 할 수 있도록 노드 배열을 만들려고합니다.노드 배열 : 초기화
그러나 노드 배열 초기화에 문제가 있습니다. 배열의 노드가 NULL을 가리킬 것이라고 생각했습니다. 하지만 gdb에서 디버깅을 시도했을 때 다른 것을 보여주고 있습니다.
누군가가이 동작에 대한 의견이 잘못되었다고 설명 할 수 있습니까? 왜 arr 1 및 arr [2]가 null 대신 일부 메모리 위치를 가리키는 지 확인하십시오. 또한 기본 생성자를 제거하려고했지만 여전히 동일한 결과가 나타납니다. 어떤 도움을 주시면 감사하겠습니다.
노드 ** arr에 벡터가없는 문제가 있습니다. – Phaneeth