Skip to content

Commit c5101e3

Browse files
chore: add reverse to singly linked list (TheAlgorithms#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
Lines changed: 16 additions & 0 deletions
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

Lines changed: 14 additions & 0 deletions
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 }
Lines changed: 14 additions & 0 deletions
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

Lines changed: 6 additions & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy