Advertisement
Guest User

Operations_on_Linked_List

a guest
Sep 5th, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct node
  4. {
  5.     int data;
  6.     struct node *next;
  7. }*head;
  8. void print()
  9. {
  10.     struct node *temp;
  11.     temp=head;
  12.     if(temp!=NULL)
  13.     {
  14.         printf("The List is :\n");
  15.         while(temp!=NULL)
  16.         {
  17.             printf("%d->",temp->data);
  18.             temp=temp->next;
  19.         }
  20.     }
  21.     printf("\n");
  22. }
  23. void insert_at_start(int data)
  24. {
  25.     struct node *new_node;
  26.     new_node=(struct node *)malloc(sizeof(struct node));
  27.     new_node->data=data;
  28.     new_node->next=head;
  29.     head=new_node;
  30. }
  31. void insert_at_end(int data)
  32. {
  33.     struct node *temp,*new_node;
  34.     temp=head;
  35.     new_node=(struct node *)malloc(sizeof(struct node));
  36.     new_node->data=data;
  37.     if(temp==NULL)
  38.         insert_at_start(data);
  39.     else
  40.     {
  41.     while(temp->next!=NULL)
  42.     {
  43.         temp=temp->next;
  44.     }
  45.     temp->next=new_node;
  46.     new_node->next=NULL;
  47.     }
  48. }
  49. void insert_at_middle(int data,int position)
  50. {
  51.     int i;
  52.     struct node *temp,*new_node;
  53.     new_node=(struct node*)malloc(sizeof(struct node));
  54.     new_node->data=data;
  55.     temp=head;
  56.     for(i=1;i<position-1;i++)
  57.         temp=temp->next;
  58.     new_node->next=temp->next;
  59.     temp->next=new_node;
  60. }
  61. void delete_from_start()
  62. {
  63.     struct node *temp;
  64.     temp=head;
  65.     if(temp==NULL)
  66.        printf("The list is empty.\n");
  67.     else
  68.     {
  69.         head=temp->next;
  70.         free(temp);
  71.     }
  72. }
  73. void delete_from_end()
  74. {
  75.     struct node *temp,*var;
  76.     temp=head;
  77.     while(temp->next!=NULL)
  78.     {
  79.         var=temp;
  80.         temp=temp->next;
  81.     }
  82.     free(temp);
  83.     var->next=NULL;
  84. }
  85. int delete_from_middle(int position)
  86. {
  87.     int i;
  88.     struct node *temp,*temp2;
  89.     temp=head;
  90.     for(i=1;i<(position-1);i++)
  91.     {
  92.         temp=temp->next;
  93.     }
  94.     temp2=temp->next;
  95.     temp->next=temp2->next;
  96.     temp2->next=NULL;
  97.     free(temp2);
  98. }
  99. int main()
  100. {
  101.     head=NULL;
  102.     int i,val,loc;
  103.     printf("1.Insertion at the beginning.\n");
  104.     printf("2.Insertion at the end.\n");
  105.     printf("3.Insert at any position.\n");
  106.     printf("4.Delete from beginning.\n");
  107.     printf("5.Delete from end.\n");
  108.     printf("6.Delete from middle.\n");
  109.     printf("7.Exit.\n");
  110.     while(1)
  111.     {
  112.         printf("Enter Your Choice : ");
  113.         scanf("%d",&i);
  114.         switch(i)
  115.         {
  116.         case 1:
  117.             {
  118.                 printf("Enter the value of the node : ");
  119.                 scanf("%d",&val);
  120.                 insert_at_start(val);
  121.                 print();
  122.                 break;
  123.             }
  124.         case 2:
  125.             {
  126.                 printf("Enter the value of the node : ");
  127.                 scanf("%d",&val);
  128.                 insert_at_end(val);
  129.                 print();
  130.                 break;
  131.             }
  132.         case 3:
  133.             {
  134.                 printf("Enter the value and position of the node : ");
  135.                 scanf("%d%d",&val,&loc);
  136.                 insert_at_middle(val,loc);
  137.                 print();
  138.                 break;
  139.             }
  140.         case 4:
  141.             {
  142.                 delete_from_start();
  143.                 print();
  144.                 break;
  145.             }
  146.         case 5:
  147.             {
  148.                 delete_from_end();
  149.                 print();
  150.                 break;
  151.             }
  152.         case 6:
  153.             {
  154.                 printf("Enter the node to be deleted : ");
  155.                 scanf("%d",&loc);
  156.                 delete_from_middle(loc);
  157.                 print();
  158.                 break;
  159.             }
  160.         case 7:
  161.             exit (0);
  162.         }
  163.     }
  164.     return 0;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement