data_structures/linked_list: Add __str__() function (#3961)

* Adding __str__() function

* Removing white space

* Update data_structures/linked_list/__init__.py

Co-authored-by: xcodz-dot <71920621+xcodz-dot@users.noreply.github.com>

* Adding type hints

* Update __init__.py

* Update __init__.py

* Adding the changes requested

* Updating to fix pre-commit

* Updating __init__.py

* Updating __init__.py

Co-authored-by: xcodz-dot <71920621+xcodz-dot@users.noreply.github.com>
This commit is contained in:
arif599 2020-11-28 05:50:18 +00:00 committed by GitHub
parent 1e1708b8a1
commit 9c6080a6fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,19 +1,30 @@
"""
Linked Lists consists of Nodes.
Nodes contain data and also may link to other nodes:
- Head Node: First node, the address of the
head node gives us access of the complete list
- Last node: points to null
"""
from typing import Any
class Node:
def __init__(self, item, next):
def __init__(self, item: Any, next: Any) -> None:
self.item = item
self.next = next
class LinkedList:
def __init__(self):
def __init__(self) -> None:
self.head = None
self.size = 0
def add(self, item):
def add(self, item: Any) -> None:
self.head = Node(item, self.head)
self.size += 1
def remove(self):
def remove(self) -> Any:
if self.is_empty():
return None
else:
@ -22,10 +33,33 @@ class LinkedList:
self.size -= 1
return item
def is_empty(self):
def is_empty(self) -> bool:
return self.head is None
def __len__(self):
def __str__(self) -> str:
"""
>>> linked_list = LinkedList()
>>> linked_list.add(23)
>>> linked_list.add(14)
>>> linked_list.add(9)
>>> print(linked_list)
9 --> 14 --> 23
"""
if not self.is_empty:
return ""
else:
iterate = self.head
item_str = ""
item_list = []
while iterate:
item_list.append(str(iterate.item))
iterate = iterate.next
item_str = " --> ".join(item_list)
return item_str
def __len__(self) -> int:
"""
>>> linked_list = LinkedList()
>>> len(linked_list)