私は、各スロットに連鎖と単独リンクリストでハッシュマップを作成しました。私が挿入を使用すると、リンクされたリストの後ろに新しいノードが送られますが、新しいノードを挿入すると、各スロットをソートする必要があります。次のinsert
機能を編集するにはどうしたらよいですか?後で各スロットを並べ替えるのではなく、正しい位置に挿入するようにしてください。各スロットにソートされたリンクされたリストを持つハッシュマップを作成する
void hashInsert(int key){
int hashLoc = h(key);
HashNode* prev = NULL;
HashNode* entry = hTable[hashLoc];
while(entry != NULL){
prev = entry;
entry = entry->next;
}
if(entry == NULL){
entry = new HashNode(key);
if(prev == NULL){
hTable[hashLoc] = entry;
}
else{
prev->next = entry;
}
}
else{
entry->value = key;
}
}
あなただけのより大きな値を持つノードの前にそれを追加し、リンクの最後の場所にそれを追加する必要はありませんそれ。これよりも小さくても大きくても、比較関数またはラムダを使用することができます。新しいHashNodeを割り当てる必要があります。また、そのノードの次の値を直後のノードに設定する必要があります。後にノードに1つ。 – ArmenB
新しいHashNodeを設定するにはどうすればいいのですか? – zsloan112
あなたが追加しているキー – ArmenB