From d4f9a71f6a22971ad8edcfd982d6b113f627d108 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 27 May 2019 08:56:03 -0400 Subject: [PATCH] fix(linkedlist): removeFirst's last reference --- src/data-structures/linked-lists/linked-list.js | 4 ++-- src/data-structures/linked-lists/linked-list.spec.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/data-structures/linked-lists/linked-list.js b/src/data-structures/linked-lists/linked-list.js index 13670de7..191ef164 100644 --- a/src/data-structures/linked-lists/linked-list.js +++ b/src/data-structures/linked-lists/linked-list.js @@ -183,10 +183,10 @@ class LinkedList { this.first = head.next; if (this.first) { this.first.previous = null; + } else { + this.last = null; } this.size -= 1; - } else { - this.last = null; } return head && head.value; } diff --git a/src/data-structures/linked-lists/linked-list.spec.js b/src/data-structures/linked-lists/linked-list.spec.js index 85345fc9..46a04075 100644 --- a/src/data-structures/linked-lists/linked-list.spec.js +++ b/src/data-structures/linked-lists/linked-list.spec.js @@ -32,6 +32,17 @@ describe('LinkedList Test', () => { linkedList.addLast('b'); }); + it('should remove with only one element', () => { + linkedList = new LinkedList(); + linkedList.addLast('a'); + + expect(linkedList.removeFirst()).toBe('a'); + + expect(linkedList.size).toBe(0); + expect(linkedList.first).toBe(null); + expect(linkedList.last).toBe(null); + }); + it('should remove first item: a', () => { expect(linkedList.removeFirst()).toBe('a'); expect(linkedList.first.value).toBe('b'); @@ -44,6 +55,7 @@ describe('LinkedList Test', () => { expect(linkedList.first).toBe(null); expect(linkedList.last).toBe(null); + expect(linkedList.size).toBe(0); }); });