Files
2026-08-24 22:20:36 +02:00

73 lines
1.4 KiB
JavaScript

class LinkedListNode {
constructor(key, value) {
this.key = key;
this.value = value;
this.next = null;
};
};
class LinkedList {
constructor() {
this.map = new Map();
this.head = null;
this.tail = null;
};
getElement(id) {
const element = this.map.get(id);
if (!element) return;
return element.value;
}
hasElement(id) {
return this.map.has(id);
}
isEmpty() {
return this.head === null;
}
addItem(key, value) {
const temp = new LinkedListNode(key, value);
if (!this.head) {
this.head = temp;
this.tail = temp;
} else {
this.tail.next = temp;
this.tail = temp;
};
this.map.set(key, temp);
}
each(cb) {
if (this.isEmpty()) return;
let current = this.head;
while (current) {
cb(current.key, current.value);
current = current.next;
};
}
clearEach(cb) {
if (this.isEmpty()) return;
let current = this.head;
while (current) {
cb(current.key, current.value);
current = current.next;
};
this.head = null;
this.tail = null;
this.map.clear();
}
};
module.exports = LinkedList;