mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +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 () {
|
||||
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 }
|
||||
|
@ -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)
|
||||
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