Insert at nth Position in Linked List

  1. #include<stdio.h>  
  2. #include<conio.h>  
  3. #include<stdlib.h>  
  4. typedef struct node  
  5. {  
  6.     int data;  
  7.     struct node* next;  
  8.       
  9. }node;  
  10. struct node* head;  
  11. void insert(int x)  
  12. {  
  13.     struct node* temp=head;  
  14.     temp=(node*)malloc(sizeof(struct node));  
  15.     temp->data=x;  
  16.     if(head==NULL)  
  17.     {  
  18.         temp->next=NULL;  
  19.         head=temp;  
  20.     }  
  21.     else  
  22.     {  
  23.         struct node* temp2=NULL;  
  24.         temp2=(node *)malloc(sizeof(struct node));   
  25.         temp=head;   
  26.         while(temp->next!=NULL)  
  27.         {             
  28.             temp=temp->next;  
  29.               
  30.         }  
  31.         temp->next=temp2;  
  32.         temp2->data=x;  
  33.         temp2->next=NULL;  
  34.       
  35.           
  36.     }  
  37.       
  38. }  
  39. void print()  
  40. {  
  41.     struct node* temp=head;  
  42.     while(temp!=NULL)  
  43.     {  
  44.         printf("%d",temp->data);  
  45.         printf(":");  
  46.         temp=temp->next;  
  47.     }  
  48. }  
  49. int count()  
  50. {  
  51.     struct node* temp=NULL;  
  52.     int count=0;  
  53.     while(temp!=NULL)  
  54.     {  
  55.         count++;  
  56.         temp=temp->next;  
  57.     }  
  58.     return count;  
  59. }  
  60. void insertAtNth(int value,int pos)  
  61. {  
  62.     struct node* temp=NULL;  
  63.     temp=(node*)malloc(sizeof(struct node));  
  64.     
  65.     if(pos==1)  
  66.     {  
  67.         temp->data=value;  
  68.         temp->next=head;  
  69.         head=temp;  
  70.         return;  
  71.     }  
  72.     else  
  73.     {  
  74.         struct node* temp2=head;  
  75.                 struct node* temp3=NULL;  
  76.         int i=0;  
  77.         for(i=1;i<pos-1;i++)  
  78.         {  
  79.             //temp=temp1;  
  80.             temp2=temp2->next;  
  81.             temp3=temp2->next;  
  82.         }  
  83.         temp2->next=temp;  
  84.         temp->data=value;  
  85.         temp->next=temp3;  
  86.         //temp->next=temp2->next;  
  87.     }  
  88.         printf("   After insertion   ");      
  89.     print();      
  90.     }  
  91.           
  92.   
  93. void main()  
  94. {  
  95.     insert(4);  
  96.     insert(8);  
  97.     insert(12);  
  98.     insert(16);  
  99.     insert(20);  
  100.     print();  
  101.     insertAtNth(24,1);  
  102.     insertAtNth(45,3);  
  103.     getch();  
  104. }