#include <bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node *next;
//constructor
node(int d){
d=data;
next=NULL;
}
};
//Insertion at head
void Insertathead(node *&head,int data){
node *n=new node(data);
n->next=head;
head=n;
}
//Print the linked list
void print(node *head){
node temp=head;
while(temp !=NULL){
cout<data<<"->";
temp=temp->next;
}
}
//Length of the linked list
int length(nodehead){
node *temp=head;
int len=0;
while(temp !=NULL){
len++;
}
return len;
}
//Insertion at the tail
void Insertattail(node *&head,int data){
node n=new node(data);
if(head==NULL){
head=new node(data);
return;
}
nodetemp=head;
while(temp->next !=NULL)
temp=temp->next;
temp->next=n;
}
//Insertion in the middle
void Insertioninthemiddle(node & head,int data,int p){
if(head==NULL || p==0)
Insertathead(head,data);
else if(p>length(head))
Insertattail(head,data);
else{
int jump=1;
nodetemp=head;
while(jump<=p-1){
temp=temp->next;
jump++;
}
node*n=new node(data);
n->next=temp->next;
temp->next=n;
}
}
int main() {
node *head=NULL;
Insertathead(head,2);
Insertathead(head,3);
Insertathead(head,4);
Insertathead(head,5);
print(head);
}