Skip to content

Instantly share code, notes, and snippets.

@kshirish
Last active August 11, 2024 03:40
Show Gist options
  • Save kshirish/c9781a49a568780e39055539879df46c to your computer and use it in GitHub Desktop.
Save kshirish/c9781a49a568780e39055539879df46c to your computer and use it in GitHub Desktop.
with head
// 2 -> 8 -> 10 -> 4 -> 7
// {value, next}
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class LinkedList {
constructor(headNode) {
this.headNode = headNode;
}
add(node) {
let pointer = this.headNode;
while(pointer.next) {
pointer = pointer.next;
}
pointer.next = node;
}
insert(value, beforeValue) {
let pointer = this.headNode;
const node = new Node(value);
while(pointer.next) {
pointer = pointer.next;
if(pointer.value === beforeValue) {
node.next = pointer.next;
pointer.next = node;
}
}
}
remove(value) {
let pointer = this.headNode;
while(pointer.next) {
if(pointer.next.value === value) {
pointer.next = pointer.next.next;
} else {
pointer = pointer.next;
}
}
}
printAll() {
let pointer = this.headNode;
while(pointer.next) {
pointer = pointer.next;
console.log(pointer.value);
}
}
}
const headNode = new Node('HEAD'); // {'HEAD', null}
const ll = new LinkedList(headNode);
ll.add(new Node(2));
ll.add(new Node(8));
ll.add(new Node(10));
ll.add(new Node(4));
ll.add(new Node(7));
ll.printAll();
ll.remove(2);
ll.printAll();
ll.insert(100, 4);
ll.insert(55, 7);
ll.printAll();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment