Skip to content

data_structures/linked_list: Adding __str__() function #3960 #3961

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Nov 28, 2020
46 changes: 40 additions & 6 deletions data_structures/linked_list/__init__.py
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -22,10 +33,33 @@ def remove(self):
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)
Expand Down