Skip to content

Commit a85c853

Browse files
solve 3_linked_list first excercise
1 parent 7d353b8 commit a85c853

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

data_structures/3_LinkedList/3_linked_list.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,42 @@ def insert_values(self, data_list):
8585
for data in data_list:
8686
self.insert_at_end(data)
8787

88+
def insert_after_value(self, data_after, data_to_insert):
89+
itr = self.head
90+
while itr:
91+
if itr.data == data_after:
92+
new_node = Node(data_to_insert, itr.next)
93+
itr.next = new_node
94+
break
95+
itr = itr.next
96+
97+
def remove_by_value(self, data):
98+
itr = self.head
99+
prev = None
100+
while itr:
101+
if itr.data == data:
102+
if prev:
103+
prev.next = itr.next
104+
break
105+
else:
106+
self.head = itr.next
107+
108+
prev = itr
109+
itr = itr.next
88110

89111
if __name__ == '__main__':
90112
ll = LinkedList()
91113
ll.insert_values(["banana","mango","grapes","orange"])
92-
ll.insert_at(1,"blueberry")
93-
ll.remove_at(2)
94114
ll.print()
95-
96-
ll.insert_values([45,7,12,567,99])
97-
ll.insert_at_end(67)
115+
ll.insert_after_value("mango","apple") # insert apple after mango
116+
ll.print()
117+
ll.remove_by_value("orange") # remove orange from linked list
118+
ll.print()
119+
ll.remove_by_value("figs")
120+
ll.print()
121+
ll.remove_by_value("banana")
122+
ll.remove_by_value("mango")
123+
ll.remove_by_value("apple")
124+
ll.remove_by_value("grapes")
98125
ll.print()
99126

0 commit comments

Comments
 (0)