import java.util.*;
public class Node {
int data;
Node next;
public Node(int data)
{
    this.data=data;
    next=null;
}
}
class LinkedList
{
    private Node start;
    public LinkedList()
    {
        start=null;
    }
    public void insertHead(int ele)
    {
        Node p=new Node(ele);
        p.next=start;
        start=p;
    }
    public void insertEnd(int ele)
    {
        Node p=new Node(ele);
        if(start==null)
            start=p;
        else
        {
            Node q=start;
            while(q.next!=null)
                q=q.next;
            q.next=p;
        }
    }
    public void insertAfter(int ele, int pos)
    {
        Node p=new Node(ele);
        Node q=start;
        for(int i=0;i<pos-2;i++)
            q=q.next;
        p.next=q.next;
        q.next=p;
    }
    public int deleteBeg() throws Exception
    {
        if(start==null)
            throw new Exception("LL Empty");
        Node p=start;
        start=start.next;
        return(p.data);
    }
    public void display()
    {
        if(start==null)
        {
            System.out.print("LL Empty");
            return;
        }
        Node q=start;
        while(q!=null)
        {
            System.out.print(q.data+" ");
            q=q.next;

        }
        System.out.println();
    }
}
class LinkedListExp
{
  public static void main(String args[])
  {
    Scanner src=new Scanner(System.in);
    LinkedList obj=new LinkedList();
    while(true)
    {
        int ele;
        System.out.println("Enter choice: \n1.InsertHead \n2.InsertAfter \n3.InsertEnd \n4.Delete \n5.Display \n6.Exit");
        int ch=src.nextInt();
        if(ch==6)
            break;
        switch(ch)
        {
            case 1:System.out.println("Enter the element to insert");
            ele=src.nextInt();
            obj.insertHead(ele);
            obj.display();
            break;

            case 2:System.out.println("Enter the element to insert");
            ele=src.nextInt();
            System.out.println("Enter the position");
            int pos=src.nextInt();
            obj.insertAfter(ele, pos);
            obj.display();
            break;

            case 3:System.out.println("Enter the element to insert");
            ele=src.nextInt();
            obj.insertEnd(ele);
            obj.display();
            break;

            case 4:try
            {
                 ele=obj.deleteBeg();
                System.out.println("Deleted Element is "+ele);
            }
            catch(Exception e)
            {
                System.out.println(e);

            }
            obj.display();
            break;

            case 5:obj.display();
            break;

            default:System.out.println("INVALID CHOICE");
        }

    }
}
}

O/P:-

Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
23
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
56
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
78
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
99
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
22
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
66
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
1
Enter the element to insert
33
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
5
33 66 22 99 78 56 23 
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
2
Enter the element to insert
7
Enter the position
3
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
5
33 66 7 22 99 78 56 23 
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
3
Enter the element to insert
100
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
5
33 66 7 22 99 78 56 23 100 
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
4
Deleted Element is 33
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
4
Deleted Element is 66
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
5
7 22 99 78 56 23 100 
Enter choice: 
1.InsertHead 
2.InsertAfter 
3.InsertEnd 
4.Delete 
5.Display 
6.Exit
6
BUILD SUCCESSFUL (total time: 4 minutes 37 seconds)
