From f8bd4fd8fa6c8dcb0d26f54a6ed7d80e5443d65b Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Fri, 19 Apr 2019 12:27:58 -0400 Subject: [PATCH] fix(linked-list): insert in the middle bug When inserting an item on the middle of a linked list one reference was not being updated properly. Fixed #8 --- src/data-structures/linked-lists/linked-list.js | 2 +- src/data-structures/linked-lists/linked-list.spec.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/data-structures/linked-lists/linked-list.js b/src/data-structures/linked-lists/linked-list.js index b9440791..13670de7 100644 --- a/src/data-structures/linked-lists/linked-list.js +++ b/src/data-structures/linked-lists/linked-list.js @@ -96,7 +96,7 @@ class LinkedList { newNode.next = current; // <5> current.previous.next = newNode; // <6> - if (current.next) { current.next.previous = newNode; } // <7> + current.previous = newNode; // <7> this.size += 1; return newNode; } diff --git a/src/data-structures/linked-lists/linked-list.spec.js b/src/data-structures/linked-lists/linked-list.spec.js index e7b438b5..85345fc9 100644 --- a/src/data-structures/linked-lists/linked-list.spec.js +++ b/src/data-structures/linked-lists/linked-list.spec.js @@ -165,8 +165,12 @@ describe('LinkedList Test', () => { it('should insert at the middle', () => { const newNode = linkedList.add('middle', 1); expect(newNode.value).toBe('middle'); + // checking the 4 surrounding links were updated expect(newNode.next.value).toBe('found'); expect(newNode.previous.value).toBe(0); + expect(linkedList.get(0).next.value).toBe('middle'); + expect(linkedList.get(2).previous.value).toBe('middle'); + expect(linkedList.size).toBe(3); expect(linkedList.first.value).toBe(0); });