I am learning about linked lists for the first time and feel like I am getting a pretty good understanding of inserting at the beginning or end of a linked list.
However, I see that if I have an existing linked list and I do self.head = None then it gets rid of every element, thus giving me an empty linked list. What is happening under the hood? Why does this happen? Any information is appreciated.
class Node:
def __init__(self, data = None, next = None):
self.data = data
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def insert_at_beginning(self, data):
node = Node(data, self.head)
self.head = node
def print(self):
if self.head is None:
print("linked list is empty")
return
itr = self.head
llstr = ''
while itr:
llstr += str(itr.data) + '-->'
itr = itr.next
print(llstr)
def insert_at_end(self, data):
if self.head is None:
self.head = Node(data, None)
return
itr = self.head
while itr.next:
itr = itr.next
itr.next = Node(data, None)
def clear_linked_list(self):
self.head = None
return
def insert_values(self, data_list):
self.clear_linked_list()
for data in data_list:
self.insert_at_end(data)
if __name__ == "__main__":
ll = LinkedList()
ll.insert_at_beginning(5)
ll.insert_at_beginning(89)
ll.insert_at_end(90)
ll.print()
ll.insert_values(['nothing', 'test'])
ll.print()