Miti059

Singly linked list

Oct 13th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.15 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct Node
  5. {
  6.     int data;
  7.     struct Node *next;
  8. } node;
  9.  
  10. node *head=NULL;
  11. void Insert_First();
  12. void Insert_End();
  13. void Insert_Any();
  14. void Delete_Data();
  15. void Delete_Position();
  16. void Display();
  17. void SearchData();
  18.  
  19.  
  20. void main()
  21. {
  22.  
  23.     int ch,n,m,pos,i;
  24.     while(1)
  25.     {
  26.         printf("\n\nSingly linked list operations\n\n");
  27.  
  28.         printf("1.Insert First\n");
  29.         printf("2.Insert Any\n");
  30.         printf("3.Delete Elements\n");
  31.         printf("4.display\n");
  32.         printf("5.Delete Position\n");
  33.         printf("6.Search Data\n");
  34.         printf("7.Insert at end\n");
  35.  
  36.         printf("Enter your choice:");
  37.         scanf("%d",&ch);
  38.  
  39.         switch(ch)
  40.         {
  41.             case 1:
  42.             printf("enter your desired number: ");
  43.             scanf("%d",&m);
  44.             Insert_First(m);
  45.             break;
  46.         case 2 :
  47.             printf("enter your desired number: ");
  48.             scanf("%d",&m);
  49.             printf("enter position: ");
  50.             scanf("%d",&pos);
  51.             Insert_Any(m,pos);
  52.             break;
  53.         case 3:
  54.             Delete_Data();
  55.             break;
  56.         case 4:
  57.             Display();
  58.             break;
  59.         case 5:
  60.             Delete_Position();
  61.             break;
  62.         case 6:
  63.             SearchData();
  64.             break;
  65.         case 7:
  66.             printf("Enter your desired number");
  67.             scanf("%d",&m);
  68.             Insert_End(m);
  69.             break;
  70.  
  71.            dafault:
  72.             printf("Invalid choice");
  73.  
  74.         }
  75.     }
  76. }
  77.  
  78. void Insert_First(int data)
  79. {
  80.  
  81.     node* newnode;
  82.     newnode=(node*)malloc(sizeof(node));
  83.     newnode->data=data;
  84.     newnode->next=head;
  85.     head=newnode;
  86. }
  87. void Insert_Any(int data,int pos)
  88. {
  89.  
  90.     int count=1;
  91.     node *newnode;
  92.     newnode=(node*)malloc(sizeof(node));
  93.     newnode->data=data;
  94.     newnode->next=NULL;
  95.     if(pos==1)
  96.     {
  97.         newnode->next=head;
  98.         head=newnode;
  99.     }
  100.     else
  101.     {
  102.         node *current=head;
  103.         while(count<pos-1)
  104.         {
  105.             current=current->next;
  106.             count++;
  107.         }
  108.         newnode->next=current->next;
  109.         current->next=newnode;
  110.     }
  111. }
  112. void Insert_End(int data)
  113. {
  114.  
  115.     node *newnode;
  116.     newnode=(node*)malloc(sizeof(node));
  117.     newnode->data=data;
  118.     newnode->next=NULL;
  119.     if(head==NULL)
  120.     {
  121.         head=newnode;
  122.     }
  123.     else
  124.     {
  125.         node* current=head;
  126.         while(current->next!=NULL)
  127.         {
  128.             current=current->next;
  129.  
  130.         }
  131.         current->next=newnode;
  132.     }
  133. }
  134.  
  135. void Display()
  136. {
  137.  
  138.     node*current=head;
  139.     printf("List is: ");
  140.     while(current!=NULL)
  141.     {
  142.         printf("%d ",current->data);
  143.         current=current->next;
  144.     }
  145.     printf("\n\n");
  146. }
  147.  
  148.  
  149.  
  150. void SearchData()
  151. {
  152.  
  153.     node* current=head;
  154.     int s, test=0;
  155.  
  156.     printf("Enter the search data: ");
  157.     scanf("%d",&s);
  158.  
  159.     while(current!=NULL)
  160.     {
  161.         if(current->data==s)
  162.         {
  163.             test = 1;
  164.             break;
  165.         }
  166.         current=current->next;
  167.     }
  168.     if(test==1)
  169.         printf("Found");
  170.     if(test==0)
  171.         printf("Not Found");
  172. }
  173. void Delete_Data(int data)
  174. {
  175.  
  176.     int pos;
  177.     node* current=head;
  178.     node* previous;
  179.     printf("Which data you want to delete: ");
  180.     scanf("%d",&pos);
  181.     if(head->data==pos)
  182.     {
  183.         head=head->next;
  184.         free(current);
  185.     }
  186.     else
  187.     {
  188.         while(current!=NULL && current->data!=pos)
  189.         {
  190.             previous=current;
  191.             current=current->next;
  192.         }
  193.         if(current->data==pos)
  194.         {
  195.             previous->next=current->next;
  196.             free(current);
  197.         }
  198.  
  199.     }
  200. }
  201.  
  202. void Delete_Position()
  203. {
  204.  
  205.     int p;
  206.     printf("ENTER POS:\n");
  207.     scanf("%d",&p);
  208.  
  209.     node *list=head;
  210.     if(p==1)
  211.     {
  212.         head=list->next;
  213.         free(list);
  214.  
  215.     }
  216.     else
  217.     {
  218.         p=p-2;
  219.         node*temp;
  220.         while(p!=0 )
  221.         {
  222.             list=list->next;
  223.             p--;
  224.         }
  225.         temp=list->next;
  226.         list->next=temp->next;
  227.         free(temp);
  228.  
  229.     }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment