// use linked list for chaining.
class LinkedHashEntry {
private:
int key;
int value;
LinkedHashEntry* next;
public:
LinkedHashEntry(int key, int value) {
this->key = key;
this->value = value;
this->next = NULL;
}
int getKey() {
return key;
}
int getValue() {
return value;
}
void setValue(int value) {
this->value = value;
}
LinkedHashEntry* getNext() {
return next;
}
void setNext(LinkedHashEntry *next){
this->next = next;
}
}
const int TABLE_SIZE = 128;
class HashMap {
private:
LinkedHashEntry **table;
public:
HashMap() {
table = new LinkedHashEntry*(TABLE_SIZE);
for(int i = 0; i < TABLE_SIZE; ++i) {
table[i] = NULL;
}
}
int get(int key) {
int hashValue = key %..
if(table[hashValue] == NULL) {
return -1;
} else {
LinkedHashEntry* entry = table(hashValue);
while(entry != NULL && entry->getKey() != key) {
entry = entry->getNext();
}
if(entry == NULL) return -1;
else return entry->getValue();
}
}
void put(int key, int value) {
int hashValue = key %...
if(table[hashValue] == NULL) {
table[hashValue] = new LinkedHashEntry(key, value);
} else {
LinkedHashEntry *entry = table[hashValue];
while(entry->getNext() != NULL) {
entry = entry->getNext();
if(entry->getKey() == key) {entry->setValue(value);}
else entry->setNext(new LinkedHashEntry(key, value));
}
}
void remove(int key) {
int hashValue = key % ...
if(table[hashValue]) {
LinkedHashEntry *prevEntry = NULL;
LinkedHashEntry* entry = table[hashValue];
while(entry->getNext() && entry->getKey() != key) {
prevEntry = entry;
entry = entry->getNext();
}
if(entry->getKey() == key) {
if(prevEntry == NULL) {
LinkedHashEntry* nextEntry = entry->getNext();
delete entry;
table[hash] = nextEntry;
} else {
LinkedHashEntry *next = entry->getNext();
delete next;
prevEntry->setNext(next);
}
}
}
}
~HashMap() {
for(int i = 0; i < TABLE_SIZE; ++i) {
if(table[i] != NULL) {
LinkedHashEntry* prevEntry = NULL;
LinkedHashEntry* entry = table[i];
while(entry) {
prevEntry = entry;
entry = entry->getNext();
delete prevEntry;
}
}
}
delete[] table;
}
}
Design HashMap.
最新推荐文章于 2020-03-15 01:50:48 发布