From 8194068395e8788d418e7567979809252dd454fa Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 29 Oct 2022 16:49:24 +0530 Subject: [PATCH 1/4] Fix: Reverse Singly Linked List --- .../Linked-List/ReverseSinglyLinkedList.js | 16 ++++++++++++++++ .../test/ReverseSinglyLinkedList.test.js | 14 ++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 Data-Structures/Linked-List/ReverseSinglyLinkedList.js create mode 100644 Data-Structures/Linked-List/test/ReverseSinglyLinkedList.test.js diff --git a/Data-Structures/Linked-List/ReverseSinglyLinkedList.js b/Data-Structures/Linked-List/ReverseSinglyLinkedList.js new file mode 100644 index 0000000000..db4e7ef6d6 --- /dev/null +++ b/Data-Structures/Linked-List/ReverseSinglyLinkedList.js @@ -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 } diff --git a/Data-Structures/Linked-List/test/ReverseSinglyLinkedList.test.js b/Data-Structures/Linked-List/test/ReverseSinglyLinkedList.test.js new file mode 100644 index 0000000000..847026db89 --- /dev/null +++ b/Data-Structures/Linked-List/test/ReverseSinglyLinkedList.test.js @@ -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) + }) +}) From ba12a8a44ea01a287d7dc48692a3f51a5f66873a Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 29 Oct 2022 20:22:11 +0530 Subject: [PATCH 2/4] Added reverse in SinglyLinkedList --- Data-Structures/Linked-List/SinglyLinkedList.js | 14 ++++++++++++++ .../Linked-List/test/SinglyLinkedList.test.js | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/Data-Structures/Linked-List/SinglyLinkedList.js b/Data-Structures/Linked-List/SinglyLinkedList.js index d55e0b14b8..c6a3ebc73d 100644 --- a/Data-Structures/Linked-List/SinglyLinkedList.js +++ b/Data-Structures/Linked-List/SinglyLinkedList.js @@ -274,6 +274,20 @@ class LinkedList { log () { console.log(JSON.stringify(this.headNode, null, 2)) } + + // Method to reverse the LinkedList where each node contains a single integer value + reverseList () { + 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 } diff --git a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js index 764cac7aa9..68a73135bf 100644 --- a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js +++ b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js @@ -247,4 +247,12 @@ describe('SinglyLinkedList', () => { headNode.rotateListRight(5) expect(headNode.get()).toEqual([20, 30, 40, 50, 10]) }) + + it('Reverse a number represented as a Linked List where each node has a single integer', () => { + const headNode = new LinkedList([4, 3, 1]) + headNode.reverseList() + expect(headNode.get()).toEqual([1, 3, 4]) + + }) + }) From 3afca79759322ec0091a0c25854847c81514f429 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 29 Oct 2022 20:22:29 +0530 Subject: [PATCH 3/4] Added reverse in SinglyLinkedList --- Data-Structures/Linked-List/test/SinglyLinkedList.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js index 68a73135bf..7c7bb10eba 100644 --- a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js +++ b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js @@ -252,7 +252,5 @@ describe('SinglyLinkedList', () => { const headNode = new LinkedList([4, 3, 1]) headNode.reverseList() expect(headNode.get()).toEqual([1, 3, 4]) - }) - }) From 3691294f0833bb5734d73467fd896fb91057ad47 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 29 Oct 2022 22:40:08 +0530 Subject: [PATCH 4/4] Changes made --- Data-Structures/Linked-List/SinglyLinkedList.js | 4 ++-- Data-Structures/Linked-List/test/SinglyLinkedList.test.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Data-Structures/Linked-List/SinglyLinkedList.js b/Data-Structures/Linked-List/SinglyLinkedList.js index c6a3ebc73d..605ede4013 100644 --- a/Data-Structures/Linked-List/SinglyLinkedList.js +++ b/Data-Structures/Linked-List/SinglyLinkedList.js @@ -275,8 +275,8 @@ class LinkedList { console.log(JSON.stringify(this.headNode, null, 2)) } - // Method to reverse the LinkedList where each node contains a single integer value - reverseList () { + // Method to reverse the LinkedList + reverse () { let head = this.headNode let prev = null let next = null diff --git a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js index 7c7bb10eba..a04d06ba15 100644 --- a/Data-Structures/Linked-List/test/SinglyLinkedList.test.js +++ b/Data-Structures/Linked-List/test/SinglyLinkedList.test.js @@ -248,9 +248,9 @@ describe('SinglyLinkedList', () => { expect(headNode.get()).toEqual([20, 30, 40, 50, 10]) }) - it('Reverse a number represented as a Linked List where each node has a single integer', () => { - const headNode = new LinkedList([4, 3, 1]) - headNode.reverseList() - expect(headNode.get()).toEqual([1, 3, 4]) + it('Reverse a Linked List', () => { + const list = new LinkedList([4, 3, 1]) + list.reverse() + expect(list.get()).toEqual([1, 3, 4]) }) }) 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