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.

insert node at end of linked list
#  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()
python insert linked list node at end
 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







© 2021, kalkicode.com, All rights reserved