Skip to content

Commit c5101e3

Browse files
chore: add reverse to singly linked list (#1241)
* Fix: Reverse Singly Linked List * Added reverse in SinglyLinkedList * Added reverse in SinglyLinkedList * Changes made
1 parent b88128d commit c5101e3

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/** A LinkedList based solution to reverse a number
2+
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/ */
3+
class ReverseSinglyLinkedList {
4+
solution (head) {
5+
let prev = null
6+
let next = null
7+
while (head) {
8+
next = head.next
9+
head.next = prev
10+
prev = head
11+
head = next
12+
}
13+
return prev
14+
};
15+
}
16+
export { ReverseSinglyLinkedList }

Data-Structures/Linked-List/SinglyLinkedList.js

+14
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,20 @@ class LinkedList {
274274
log () {
275275
console.log(JSON.stringify(this.headNode, null, 2))
276276
}
277+
278+
// Method to reverse the LinkedList
279+
reverse () {
280+
let head = this.headNode
281+
let prev = null
282+
let next = null
283+
while (head) {
284+
next = head.next
285+
head.next = prev
286+
prev = head
287+
head = next
288+
}
289+
this.headNode = prev
290+
};
277291
}
278292

279293
export { Node, LinkedList }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { ReverseSinglyLinkedList } from '../ReverseSinglyLinkedList'
2+
import { Node } from '../SinglyLinkedList'
3+
describe('ReverseSinglyLinkedList', () => {
4+
it('Reverse a Number Represented as Linked List', () => {
5+
const headNode = new Node(3)
6+
headNode.next = new Node(4)
7+
headNode.next.next = new Node(1)
8+
const expected = new Node(1)
9+
expected.next = new Node(4)
10+
expected.next.next = new Node(3)
11+
const reverseSinglyLinkedList = new ReverseSinglyLinkedList()
12+
expect(reverseSinglyLinkedList.solution(headNode)).toEqual(expected)
13+
})
14+
})

Data-Structures/Linked-List/test/SinglyLinkedList.test.js

+6
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,10 @@ describe('SinglyLinkedList', () => {
247247
headNode.rotateListRight(5)
248248
expect(headNode.get()).toEqual([20, 30, 40, 50, 10])
249249
})
250+
251+
it('Reverse a Linked List', () => {
252+
const list = new LinkedList([4, 3, 1])
253+
list.reverse()
254+
expect(list.get()).toEqual([1, 3, 4])
255+
})
250256
})

0 commit comments

Comments
 (0)