Advertisement
Guest User

Operations_of_Linked_List

a guest
Sep 5th, 2015
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.53 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("7.Exit.\n");
  109.     while(1)
  110.     {
  111.         printf("Enter Your Choice : ");
  112.         scanf("%d",&i);
  113.         switch(i)
  114.         {
  115.         case 1:
  116.             {
  117.                 printf("Enter the value of the node : ");
  118.                 scanf("%d",&val);
  119.                 insert_at_start(val);
  120.                 print();
  121.                 break;
  122.             }
  123.         case 2:
  124.             {
  125.                 printf("Enter the value of the node : ");
  126.                 scanf("%d",&val);
  127.                 insert_at_end(val);
  128.                 print();
  129.                 break;
  130.             }
  131.         case 3:
  132.             {
  133.                 printf("Enter the value and position of the node : ");
  134.                 scanf("%d%d",&val,&loc);
  135.                 insert_at_middle(val,loc);
  136.                 print();
  137.                 break;
  138.             }
  139.         case 4:
  140.             {
  141.                 delete_from_start();
  142.                 print();
  143.                 break;
  144.             }
  145.         case 5:
  146.             {
  147.                 delete_from_end();
  148.                 print();
  149.                 break;
  150.             }
  151.         case 6:
  152.             {
  153.                 printf("Enter the node to be deleted : ");
  154.                 scanf("%d",&loc);
  155.                 delete_from_middle(loc);
  156.                 print();
  157.                 break;
  158.             }
  159.         case 7:
  160.             exit (0);
  161.         }
  162.     }
  163.     return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement