Skip to content

Commit cefc034

Browse files
committed
Fix bug with insert_at_tail method
Create __str__() method for Node class and LinkedList class
1 parent 40efd77 commit cefc034

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

Diff for: data_structures/linked_list/doubly_linked_list.py

+20-15
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ def __init__(self):
2828
self.head = None # First node in list
2929
self.tail = None # Last node in list
3030

31+
def __str__(self):
32+
if self.is_empty:
33+
return "List is empty"
34+
current = self.head
35+
nodes = []
36+
while current is not None:
37+
nodes.append(current)
38+
current = current.next
39+
return " ".join(str(node) for node in nodes)
40+
3141
def insert_at_head(self, data):
3242
new_node = Node(data)
3343
if self.is_empty:
@@ -55,9 +65,13 @@ def delete_head(self) -> str:
5565

5666
def insert_at_tail(self, data):
5767
new_node = Node(data)
58-
self.tail.next = new_node
59-
new_node.previous = self.tail
60-
self.tail = new_node
68+
if self.is_empty:
69+
self.tail = new_node
70+
self.head = new_node
71+
else:
72+
self.tail.next = new_node
73+
new_node.previous = self.tail
74+
self.tail = new_node
6175

6276
def delete_tail(self) -> str:
6377
if self.is_empty:
@@ -94,24 +108,15 @@ def delete(self, data) -> str:
94108
return data
95109

96110
@property
97-
def is_empty(self): # Will return True if the list is empty
111+
def is_empty(self): # return True if the list is empty
98112
return self.head is None
99113

100-
def display(self): # Prints contents of the list
101-
if self.is_empty:
102-
return "List is empty"
103-
current = self.head
104-
while current is not None:
105-
current.display_node()
106-
current = current.next
107-
print()
108-
109114

110115
class Node:
111116
def __init__(self, data):
112117
self.data = data
113118
self.previous = None
114119
self.next = None
115120

116-
def display_node(self):
117-
print(f"{self.data}", end=" ")
121+
def __str__(self):
122+
return f"{self.data}"

0 commit comments

Comments
 (0)