Deleting Last item in the List

  1. #include <stdio.h>    
  2. #include<stdlib.h>    
  3.     
  4. typedef struct node{    
  5.     int data;    
  6.     struct node* next;    
  7. }node;    
  8. struct node* head;    
  9. void InsertAtEnd(int x)    
  10. {    
  11.     struct node* temp=NULL;    
  12.     temp=(node *)malloc(sizeof(struct node));    
  13.     temp->data=x;    
  14. if(head==NULL)    
  15. {    
  16.     head=temp;    
  17.     temp->next=NULL;    
  18. }    
  19. else    
  20. {    
  21.     struct node* temp2=NULL;    
  22.     temp2=(node *)malloc(sizeof(struct node));    
  23.     struct node* temp1=head;    
  24.         
  25.     while(temp1->next!=NULL)    
  26.     {    
  27.         temp1=temp1->next;    
  28.     }    
  29.     temp1->next=temp2;    
  30.     temp2->data=x;    
  31.     temp2->next=NULL;    
  32. }    
  33. }    
  34. void print()    
  35. {    
  36.     struct node* temp=head;    
  37.     while(temp!=NULL)    
  38.     {    
  39.         printf("%d",temp->data);    
  40.         temp=temp->next;    
  41.     }    
  42. }    
  43. void DeleteAtEnd()  
  44. {  
  45.   
  46.     struct node* temp1=head;    
  47.     struct node* temp2=NULL;  
  48. if(temp1==NULL)  
  49. {  
  50.     printf("Empty List");  
  51. }        
  52. if(temp1->next==NULL)  
  53. {  
  54.     free(temp1);  
  55. }  
  56. else  
  57. {  
  58.     while(temp1->next!=NULL)    
  59.     {    
  60.         temp2= temp1;  
  61.         temp1=temp1->next;  
  62.     }    
  63.     free(temp1);  
  64.     temp2->next=NULL;  
  65.     printf(" :After  Deleting the Last Item :");  
  66.        print();  
  67.    }  
  68. }  
  69. void main()    
  70. {    
  71.     InsertAtEnd(1);    
  72.     InsertAtEnd(2);    
  73.     InsertAtEnd(3);   
  74.     print();     
  75.     DeleteAtEnd();  
  76.       
  77.     getch();    
  78.         
  79. }