Advertisement
NB52053

dfdfd

Oct 23rd, 2018
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct node
  7. {
  8.     int value;
  9.     struct node *next;
  10. };
  11.  
  12. struct node *head = NULL,*tail = NULL;
  13. void insertlast(int x);
  14. void print();
  15. void remove(int x);
  16. int length();
  17.  
  18. int main()
  19. {
  20.     while(1)
  21.     {
  22.         printf("...MENU...\n");
  23.         printf("(1) Insert Last\n");
  24.         printf("(2) Show All\n");
  25.         printf("(3) Remove\n");
  26.         printf("(4) Exit\n");
  27.         printf("------------\n");
  28.         printf("Enter Your Choice:");
  29.         int choice;
  30.         scanf("%d",&choice);
  31.  
  32.         int x;
  33.         switch(choice)
  34.         {
  35.             case 1:
  36.                     printf("Enter Number: ");
  37.                     scanf("%d",&x);
  38.                     insertlast(x);
  39.                     print();
  40.                     break;
  41.             case 2:
  42.                     print();
  43.                     break;
  44.             case 3:
  45.                     printf("Which value you want to remove : ");
  46.                     scanf("%d",&x);
  47.                     remove(x);
  48.                     print();
  49.                     break;
  50.             case 4:
  51.                     exit(0);
  52.         }
  53.         getchar();
  54.     }
  55. }
  56.  
  57. void print()
  58. {
  59.     node *currentnode=head;
  60.     printf("\nYour List is: ");
  61.     while(currentnode!=NULL)
  62.     {
  63.         printf("%d ",currentnode->value);
  64.         currentnode= currentnode->next;
  65.     }
  66.     printf("\n\n\n");
  67.  
  68. }
  69. void insertlast(int x)
  70. {
  71.     node *temp=(node*)malloc(sizeof(node));
  72.     if(head==NULL)
  73.     {
  74.         temp->value=x;
  75.         temp->next=NULL;
  76.         head=temp;
  77.         tail=temp;
  78.     }
  79.     else
  80.     {
  81.         temp->value=x;
  82.         temp->next=NULL;
  83.         tail->next=temp;
  84.         tail=temp;
  85.     }
  86. }
  87. int search(int x)
  88. {
  89.     node *currentnode=head;
  90.     while(currentnode!=NULL)
  91.     {
  92.         if(currentnode->value==x)
  93.             return 1;
  94.         currentnode= currentnode->next;
  95.     }
  96.     return 0;
  97. }
  98. int length()
  99. {
  100.     int l=0;
  101.     node *currentnode=head;
  102.     while(currentnode!=NULL)
  103.     {
  104.         l++;
  105.         currentnode= currentnode->next;
  106.     }
  107.     return l;
  108. }
  109. void remove(int x)
  110. {
  111.     node *temp=NULL,*prev=NULL,*currentnode =head;
  112.     if(search(x))
  113.     {
  114.         if(head->value==x)
  115.         {
  116.             temp=head;
  117.             head=head->next;
  118.             free(temp);
  119.         }
  120.         else
  121.         {
  122.             while(currentnode->next!=NULL)
  123.             {
  124.                 if(currentnode->next->value==x)
  125.                 {
  126.                     prev=currentnode;
  127.                     temp=currentnode->next;
  128.                     break;
  129.                 }
  130.                 else
  131.                     currentnode=currentnode->next;
  132.             }
  133.             if(temp->next==NULL)
  134.             {
  135.                 prev->next=NULL;
  136.                 tail=prev;
  137.                 free(temp);
  138.             }
  139.             else
  140.             {
  141.                 prev->next=temp->next;
  142.                 free(temp);
  143.             }
  144.         }
  145.     }
  146.     else
  147.         printf("Not found for remove");
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement