Learn practical skills, build real-world projects, and advance your career
!pip install jovian --upgrade --quiet
import jovian
filename="linked list"
class Node:
    def __init__(self,data):
        self.data=data       ## creating the new node
        self.ref=None;
class linkedlist:
    def __init__(self):
        self.head=None;    ##keeping head to none
    def printLL(self):
        if self.head is None:
            print("linked list is empty")   
        else:
            n=self.head
            while n is not None:
                print(n.data,"--->",end=" ")     ##checking elements in linked list
                n=n.ref
    def addbegin(self,data):
        new_node=Node(data)     ###adding data or value in node
        new_node.ref=self.head  ### adding reference of previous first node in new node
        self.head=new_node  ### adding refernce of new node in head value
    def addend(self,data):
        new_node=Node(data)
        if self.head is None:
            self.head=self.new_node
        else:
            n=self.head
            while n.ref is not None:
                n=n.ref
            n.ref=new_node
    def addafter(self,data,x):
        n=self.head
        while n is not None:
            if x==n.data:
                break
            n=n.ref
        if n is None:
            print("the node is not present in the linked list")
        else:
            new_node=Node(data)
            new_node.ref=n.ref
            n.ref=new_node
    def addbefore(self,data,x):
        n=self.head
        if n is None:
            print("linked list is empty")
            return 
        if n.data==x:
            new_node=Node(data)
            new_node.ref=n.ref
            self.head=new_node
            return
        while n.ref is not None:
            if n.ref.data==x:
                break
            n=n.ref
        if n.ref is None:
            print("node is not found in linked list")
        else:
            new_node=Node(data)
            new_node.ref=n.ref
            n.ref=new_node
            
        
        
                

ll=linkedlist()  
ll.addbegin(20)
ll.addend(300)
ll.addbegin(40)
ll.addafter(200,40)
ll.addbefore(500,20)
ll.printLL()
40 ---> 200 ---> 500 ---> 20 ---> 300 --->
jovian.commit(filename="linked list",Environment=None)
[jovian] Attempting to save notebook..