From 883052743a9bfd92fe87c8b3f62c6daa80b8be2d Mon Sep 17 00:00:00 2001 From: sma Date: Fri, 15 Oct 2021 13:27:58 +0530 Subject: [PATCH 1/3] Added length instance variable to keep track of length as items are added/removed. --- data_structures/linked_list/singly_linked_list.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/data_structures/linked_list/singly_linked_list.py b/data_structures/linked_list/singly_linked_list.py index e45a210a1785..7bd4ef5ed0ca 100644 --- a/data_structures/linked_list/singly_linked_list.py +++ b/data_structures/linked_list/singly_linked_list.py @@ -10,7 +10,7 @@ def __repr__(self): class LinkedList: def __init__(self): self.head = None - + self.length = 0 def __iter__(self): node = self.head while node: @@ -36,8 +36,7 @@ def __len__(self) -> int: >>> len(linked_list) 0 """ - return len(tuple(iter(self))) - + return self.length def __repr__(self): """ String representation/visualization of a Linked Lists @@ -116,6 +115,7 @@ def insert_nth(self, index: int, data) -> None: temp = temp.next new_node.next = temp.next temp.next = new_node + self.length+=1 def print_list(self) -> None: # print every node data print(self) @@ -138,6 +138,7 @@ def delete_nth(self, index: int = 0): temp = temp.next delete_node = temp.next temp.next = temp.next.next + self.length-=1 return delete_node.data def is_empty(self) -> bool: From a76fb2b1ec5fcae785b546793277f7422b0b8c29 Mon Sep 17 00:00:00 2001 From: sma Date: Fri, 15 Oct 2021 13:27:58 +0530 Subject: [PATCH 2/3] Added length instance variable to keep track of length as items are added/removed. Fixes Issue: #5315 --- data_structures/linked_list/singly_linked_list.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/data_structures/linked_list/singly_linked_list.py b/data_structures/linked_list/singly_linked_list.py index e45a210a1785..7bd4ef5ed0ca 100644 --- a/data_structures/linked_list/singly_linked_list.py +++ b/data_structures/linked_list/singly_linked_list.py @@ -10,7 +10,7 @@ def __repr__(self): class LinkedList: def __init__(self): self.head = None - + self.length = 0 def __iter__(self): node = self.head while node: @@ -36,8 +36,7 @@ def __len__(self) -> int: >>> len(linked_list) 0 """ - return len(tuple(iter(self))) - + return self.length def __repr__(self): """ String representation/visualization of a Linked Lists @@ -116,6 +115,7 @@ def insert_nth(self, index: int, data) -> None: temp = temp.next new_node.next = temp.next temp.next = new_node + self.length+=1 def print_list(self) -> None: # print every node data print(self) @@ -138,6 +138,7 @@ def delete_nth(self, index: int = 0): temp = temp.next delete_node = temp.next temp.next = temp.next.next + self.length-=1 return delete_node.data def is_empty(self) -> bool: From 51639bc7e4bb6694768a8b0fe5c149906773594e Mon Sep 17 00:00:00 2001 From: sma Date: Fri, 15 Oct 2021 16:04:23 +0530 Subject: [PATCH 3/3] Added 'length' instance method to keep track of length while adding/removing --- data_structures/linked_list/singly_linked_list.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/linked_list/singly_linked_list.py b/data_structures/linked_list/singly_linked_list.py index 7bd4ef5ed0ca..7f708ce378fa 100644 --- a/data_structures/linked_list/singly_linked_list.py +++ b/data_structures/linked_list/singly_linked_list.py @@ -115,7 +115,7 @@ def insert_nth(self, index: int, data) -> None: temp = temp.next new_node.next = temp.next temp.next = new_node - self.length+=1 + self.length += 1 def print_list(self) -> None: # print every node data print(self) @@ -138,7 +138,7 @@ def delete_nth(self, index: int = 0): temp = temp.next delete_node = temp.next temp.next = temp.next.next - self.length-=1 + self.length -= 1 return delete_node.data def is_empty(self) -> bool: