linked list insertion in c++
#include <iostream>
// Linked list
struct node {
int data ;
node * link;
};
node * Node(int data) {
node * temp = new node();
temp->data = data;
temp->link = NULL;
return temp;
}
void append(node ** head, int data) {
if(*head == NULL) {
*head = Node(data);
}else {
node * temp = * head;
while (temp->link != NULL) {
temp=temp->link;
}
temp->link = Node(data);
}
}
// insertion at begining
void insertBeg(node **head , int data) {
if(*head == NULL) {
* head = Node(data);
}else {
node * temp = Node(data);
temp->link = *head;
*head = temp;
}
}
// insert at specific position
void addafter(node * head , int loc , int data) {
node * temp , * r ;
temp = head ;
for( int i = 0 ; i<loc;i++ ) {
temp = temp->link;
if(temp == NULL) {
cout<<"there ar less elemtns" ;
return;
}
}
// insert new node
r = Node(data);
r->link = temp->link;
temp->link = r;
}
void display(node * head) {
node * temp = head;
while(temp!= NULL) {
cout<<temp->data<<" ";
temp = temp->link;
}
}
int main() {
node * head = NULL;
append(&head,5);
append(&head,5);
append(&head,5);
append(&head,5);
display(head);
cout<<endl;
insertBeg(&head,6);
insertBeg(&head,6);
insertBeg(&head,6);
display(head);
addafter(head,4,7);
cout<<endl;
display(head);
return 0;
}