JSFiddle - React, Tailwind, and code Playground
by Slava Slava
JavaScript
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class LinkedList {
constructor(value) {
const newNode = new Node(value);
this.head = newNode;
this.tail = this.head;
}
printList() {
let temp = this.head;
while (temp !== null) {
console.log(temp.value);
temp = temp.next;
}
}
getHead() {
if (this.head === null) {
console.log("Head: null");
} else {
console.log("Head: " + this.head.value);
}
}
getTail() {
if (this.tail === null) {
console.log("Tail: null");
} else {
console.log("Tail: " + this.tail.value);
}
}
makeEmpty() {
this.head = null;
this.tail = null;
this.length = 0;
}
push(value) {
const newNode = new Node(value);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
}
findKthFromEnd(num) {
console.log('prev.value')
/* try {
let prev = null
let current = this.head
let next = this.head.head
//null | 0 -> 1 -> 2 -> 3 -> 4 -> 5
while (current && current.next) {
prev = current
current = current.next
next = prev
console.log(prev.value)
}
} catch (e) {
console.log('err')
} */
}
}
let myLinkedList = new LinkedList(1);
myLinkedList.push(2);
myLinkedList.push(3);
myLinkedList.push(4);
myLinkedList.push(5);
console.log('aaa')
console.log("Original list:");
myLinkedList.printList();
const k = 2;
const kthNodeFromEnd = myLinkedList.findKthFromEnd(k);
console.log(`\n${k}th node from the end:`);
if (kthNodeFromEnd) {
console.log(kthNodeFromEnd.value);
} else {
console.log("Not found");
}
/*
EXPECTED OUTPUT:
----------------
Original list:
1
2
3
4
5
2th node from the end:
4
*/