Doubly Linked List Insert at Any Position

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