Новый элемент не добавляется в начало связанного списка - PullRequest
0 голосов
/ 04 ноября 2019

Сделал простую хеш-таблицу с 26 клавишами (буквами алфавита), которая будет содержать различные слова.

Если произойдет столкновение (скажем, два слова с одной и той же первой буквой), я сделаюсвязанный список внутри хеш-таблицы.

Чтобы сделать вещи немного быстрее, при помещении новых слов в хеш-таблицу я хочу добавить его в начало списка, а не перебирать весь список просто для добавленияслово.

Допустим, у меня есть связанный список:

{"test", "towel", "taxes"} 0 1 2 , и я добавляю слово отряд:

{"troop", "test", "towel", "taxes"} 0 1 2 3

Вот мой код:

class Node{
    constructor(word){
        this.word = word;
        this.next = null;
    }
}

class Hashtable{
    constructor(size = 26){
        this.table = new Array(size);
    }

    put(word){ // adds a word to a hashtable
        let key = word[0]; // this hashtable is really simple, the key will be the word's first letter
        let node = new Node(word); // creates a node that contains the word and a pointer to the next node

        if(this.table[key] == undefined){ // if this hash table has never been used before, intiialize it
            this.table[key] = node;
        }
        else{ // appends the node (word) to the BEGINNING of the linked list 
            node.next = this.table[key]; // sets the node's pointer to the first element of the linked list. 
            this.table[key] = node; // the first element of the list now points to this node
        }
        console.log(this.table[key]);
    }
}

А теперь я добавляю эти слова:

hashtable.put("test");
hashtable.put("toto");

И вот вопрос: Issue

Дажехотя я добавляю «toto» в последнюю очередь, он не попадает в начало списка.

Есть ли способ сделать это?

...