Insert node at end of linked list in python
Write a program which is create and add linked list node at the end (tail, last) position in python.
Suppose we are inserted the following (10, 20, 30 ,40 ,50) node in a sequence.

# Python 3 Program for
# Insert linked list element at end position set A
# Linked list node
class LinkNode :
def __init__(self, data) :
self.data = data
self.next = None
class SingleLL :
def __init__(self) :
self.head = None
# Add new node at the end of linked list
def addNode(self, value) :
# Create node
node = LinkNode(value)
if (self.head == None) :
self.head = node
else :
temp = self.head
# Find the last node
while (temp.next != None) :
# Visit to next node
temp = temp.next
# Add node at last position
temp.next = node
# Display all Linked List elements
def display(self) :
if (self.head != None) :
temp = self.head
while (temp != None) :
# Display node value
print(" ", temp.data, end = "")
# Visit to next node
temp = temp.next
else :
print("Empty Linked list")
def main() :
sll = SingleLL()
# Linked list
# 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → NULL
sll.addNode(1)
sll.addNode(2)
sll.addNode(3)
sll.addNode(4)
sll.addNode(5)
sll.addNode(6)
sll.addNode(7)
sll.addNode(8)
print(" Linked List ")
sll.display()
if __name__ == "__main__": main()
Linked List
1 2 3 4 5 6 7 8
Time complexity of above program is O(n). We can optimize above algorithm using one extra pointer. Which is hold the reference of last node. Below are implementation of this logic.
# Python 3 Program for
# Insert linked list element at end position set B
# Linked list node
class LinkNode :
def __init__(self, data) :
self.data = data
self.next = None
class SingleLL :
def __init__(self) :
self.head = None
self.tail = None
# Add new node at the end of linked list
def addNode(self, value) :
# Create a new node
node = LinkNode(value)
if (self.head == None) :
self.head = node
else :
self.tail.next = node
self.tail = node
# Display linked list element
def display(self) :
if (self.head == None) :
return
temp = self.head
# iterating linked list elements
while (temp != None) :
print("", temp.data ,"→", end = "")
# Visit to next node
temp = temp.next
print(" NULL")
def main() :
sll = SingleLL()
# Linked list
# 10 → 20 → 30 → 40 → 50 → NULL
sll.addNode(10)
sll.addNode(20)
sll.addNode(30)
sll.addNode(40)
sll.addNode(50)
print(" Linked List ")
sll.display()
if __name__ == "__main__": main()

Linked List
10 → 20 → 30 → 40 → 50 → NULL
Time complexity of above program is O(1).
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment