#### ### Linked List

**A linked list is a linear data structure, in which the elements are not stored at contiguous memory locations. The elements in a linked list are linked using pointers . This elements can be accessed by pointer traversing.**

##### insert in linked list:

Linked list class which has a datatype and a pointer which has constructor so that it can be called :

**code:**

```
#include<bits/stdc++.h>
using namespace std;
class Node{
public:
int data;
Node* next;
Node(int data)
{
this->data=data;
this->next=NULL;
}
};
Node* takeinput()
{
int data;
cin>>data;
Node* head = NULL;
Node*tail = NULL;
while(data!=-1)
{
Node* newnode=new Node(data);
if(head==NULL)
{
head=newnode;
tail=newnode;
}
else{
tail->next=newnode;
tail=tail->next;
}
cin>>data;
}
return head;
}
Node* insert(Node* head)
{
int n;
cin>>n;
int data=4;
Node* temp=head;
Node* temp1;
while(n>1)
{
temp=temp->next;
n--;
}
temp1=temp->next;
Node* newnode=new Node(data);
temp->next=newnode;
newnode->next=temp1;
return head;
}
void print(Node* head)
{
while(head!=NULL){
cout<<head->data;
head=head->next;
}
cout<<endl;
}
int main()
{
Node*head=takeinput();
print(head);
Node* a=insert(head);
print(a);
}
```

##### Take input in linked list:

The take input function in a linked list runs in O(N) time complexity where N is the number of elements in the linked list.
**code**

```
Node* takeinput()
{
int data;
cin>>data;
Node* head = NULL;
Node*tail = NULL;
while(data!=-1)
{
Node* newnode=new Node(data);
if(head==NULL)
{
head=newnode;
tail=newnode;
}
else{
tail->next=newnode;
tail=tail->next;
}
cin>>data;
}
return head;
}
```