mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 08:16:50 +08:00
chore: add reverse to singly linked list (#1241)
* Fix: Reverse Singly Linked List * Added reverse in SinglyLinkedList * Added reverse in SinglyLinkedList * Changes made
This commit is contained in:
16
Data-Structures/Linked-List/ReverseSinglyLinkedList.js
Normal file
16
Data-Structures/Linked-List/ReverseSinglyLinkedList.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/** A LinkedList based solution to reverse a number
|
||||||
|
Problem Statement: Given a number such that each of its digit is stored in a singly linked list. Reverse the linked list and return the head of the linked list Link for the Problem: https://leetcode.com/problems/reverse-linked-list/ */
|
||||||
|
class ReverseSinglyLinkedList {
|
||||||
|
solution (head) {
|
||||||
|
let prev = null
|
||||||
|
let next = null
|
||||||
|
while (head) {
|
||||||
|
next = head.next
|
||||||
|
head.next = prev
|
||||||
|
prev = head
|
||||||
|
head = next
|
||||||
|
}
|
||||||
|
return prev
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export { ReverseSinglyLinkedList }
|
@ -274,6 +274,20 @@ class LinkedList {
|
|||||||
log () {
|
log () {
|
||||||
console.log(JSON.stringify(this.headNode, null, 2))
|
console.log(JSON.stringify(this.headNode, null, 2))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Method to reverse the LinkedList
|
||||||
|
reverse () {
|
||||||
|
let head = this.headNode
|
||||||
|
let prev = null
|
||||||
|
let next = null
|
||||||
|
while (head) {
|
||||||
|
next = head.next
|
||||||
|
head.next = prev
|
||||||
|
prev = head
|
||||||
|
head = next
|
||||||
|
}
|
||||||
|
this.headNode = prev
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export { Node, LinkedList }
|
export { Node, LinkedList }
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
import { ReverseSinglyLinkedList } from '../ReverseSinglyLinkedList'
|
||||||
|
import { Node } from '../SinglyLinkedList'
|
||||||
|
describe('ReverseSinglyLinkedList', () => {
|
||||||
|
it('Reverse a Number Represented as Linked List', () => {
|
||||||
|
const headNode = new Node(3)
|
||||||
|
headNode.next = new Node(4)
|
||||||
|
headNode.next.next = new Node(1)
|
||||||
|
const expected = new Node(1)
|
||||||
|
expected.next = new Node(4)
|
||||||
|
expected.next.next = new Node(3)
|
||||||
|
const reverseSinglyLinkedList = new ReverseSinglyLinkedList()
|
||||||
|
expect(reverseSinglyLinkedList.solution(headNode)).toEqual(expected)
|
||||||
|
})
|
||||||
|
})
|
@ -247,4 +247,10 @@ describe('SinglyLinkedList', () => {
|
|||||||
headNode.rotateListRight(5)
|
headNode.rotateListRight(5)
|
||||||
expect(headNode.get()).toEqual([20, 30, 40, 50, 10])
|
expect(headNode.get()).toEqual([20, 30, 40, 50, 10])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Reverse a Linked List', () => {
|
||||||
|
const list = new LinkedList([4, 3, 1])
|
||||||
|
list.reverse()
|
||||||
|
expect(list.get()).toEqual([1, 3, 4])
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user