Advertisement
Aniket_Goku

sll

Nov 5th, 2020 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.77 KB | None | 0 0
  1. //SLL
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5. //struct of node
  6. struct sll
  7. {
  8.     int info;
  9.     struct sll *next;
  10. }*start=NULL,*temp=NULL,*prev=NULL,*node=NULL,*next1=NULL;
  11. //create node
  12. void create_node()
  13. {
  14.     int val;
  15.     node=(struct sll *)malloc(sizeof(struct sll));
  16.     if(node==NULL)
  17.     {
  18.         printf("\n Memory not allocated");
  19.         return;
  20.     }
  21.    
  22.     printf("\nEnter the Value: ");
  23.     scanf("%d",&val);
  24.     node->info=val;
  25.     node->next=NULL;
  26.        
  27. }
  28. //display the sll
  29. void disp()
  30. {
  31.     if(start==NULL)
  32.     {
  33.         printf("\n The S.L.L. is empty");
  34.        
  35.     }
  36.     else
  37.     {
  38.         temp=start;
  39.         while(temp!=NULL)
  40.         {
  41.             printf("\n\t %d",temp->info);
  42.             temp=temp->next;
  43.         }
  44.     }
  45. }
  46. //Insert from begining
  47.  
  48. void insert_beg()
  49. {
  50.     create_node();
  51.     if(start==NULL)
  52.     {
  53.         start=node;
  54.    
  55.     }
  56.     else
  57.     {
  58.         node->next=start;
  59.         start=node;
  60.     }
  61.     disp();
  62.    
  63. }
  64. //Insert from End
  65.  
  66. void insert_end()
  67. {
  68.    
  69.     if(start==NULL)
  70.     {
  71.         insert_beg();
  72.    
  73.     }
  74.     else
  75.     {
  76.         temp=start;
  77.         while(temp->next!=NULL)
  78.         {
  79.             temp=temp->next;
  80.         }
  81.         create_node();
  82.         temp->next=node;
  83.         disp();
  84.     }
  85.    
  86.    
  87. }
  88. // insert after specific value;
  89. void insert_after_val()
  90. {
  91.     int val,flag=0;
  92.     if(start==NULL)
  93.     {
  94.         printf("\n Empty S.L.L. For Values");
  95.     }
  96.     else
  97.     {
  98.         printf("Enter the specific value from sll: ");
  99.         scanf("%d",&val);
  100.         temp=start;
  101.         while(temp->next!=NULL)
  102.         {
  103.             if(temp->info==val)
  104.             {
  105.                 create_node();
  106.                 node->next=temp->next;
  107.                 temp->next=node;
  108.                 flag=1;
  109.                 break;
  110.             }
  111.             temp=temp->next;
  112.            
  113.         }
  114.         if(flag==0)
  115.         {
  116.             printf("\n[ Value does not FOUND ]");
  117.         }
  118.         else
  119.         {
  120.             disp();
  121.         }
  122.     }
  123. }
  124. //insert via position
  125. void insert_after_posi()
  126. {
  127.     int val,flag=0,i=0;
  128.     if(start==NULL)
  129.     {
  130.         printf("\n[ Empty S.L.L. for position ]");
  131.     }
  132.     else
  133.     {
  134.         printf("Enter the specific position from sll: ");
  135.         scanf("%d",&val);
  136.         temp=start;
  137.         while(temp!=NULL)
  138.         {
  139.             i++;
  140.             if(i==val)
  141.             {
  142.                 create_node();
  143.                 node->next=temp->next;
  144.                 temp->next=node;
  145.                 flag=1;
  146.                 break;
  147.             }
  148.             temp=temp->next;
  149.         }
  150.         if(flag==0)
  151.         {
  152.             printf("\n[Position is invalid]");
  153.         }
  154.         else
  155.         {
  156.             disp();
  157.         }
  158.        
  159.     }
  160.  
  161. }
  162. //delete from begining
  163. void del_beg()
  164. {
  165.     int data;
  166.     if(start==NULL)
  167.     {
  168.         printf("\n[ No value for Delete ]");
  169.     }
  170.     else
  171.     {
  172.         temp=start;
  173.        
  174.         start=temp->next;
  175.         free(temp);
  176.     }
  177.     disp();
  178. }
  179. //delete from End
  180. void del_end()
  181. {
  182.     int data;
  183.     if(start==NULL)
  184.     {
  185.         printf("\n[ No value for Delete ]");
  186.         return;
  187.     }
  188.     temp=start;
  189.     if(temp->next==NULL)
  190.     {
  191.         del_beg();
  192.         return;
  193.     }
  194.     else
  195.     {
  196.    
  197.         while(temp->next!=NULL)
  198.         {
  199.             prev=temp;
  200.             temp=temp->next;
  201.         }
  202.        
  203.         prev->next=NULL;
  204.         free(temp);
  205.     }
  206.     disp();
  207. }
  208. //delete at specific value;
  209. void del_at_val()
  210. {
  211.     int data,flag=0,val;
  212.     if(start==NULL)
  213.     {
  214.         printf("\n[ No value for Delete ]");
  215.         return;
  216.     }
  217.         else
  218.     {
  219.         printf("\n Enter the Value from Sll: ");
  220.         scanf("%d",&val);
  221.         temp=start;
  222.         if(start->info==val)
  223.         {
  224.             del_beg();
  225.             return;
  226.         }
  227.    
  228.         while(temp!=NULL)
  229.         {
  230.            
  231.  
  232.             if((temp->info)==val)
  233.             {
  234.                 flag=1;
  235.                 prev->next=temp->next;
  236.                 free(temp);
  237.                 break;
  238.                    
  239.             }
  240.             prev=temp;
  241.             temp=temp->next;
  242.         }
  243.         if(flag==0)
  244.         {
  245.             printf("\n [ Invalid Value for delete ]");
  246.         }
  247.         else
  248.         {
  249.             disp();
  250.         }
  251.        
  252.     }
  253.  
  254. }
  255. //delete at specific position;
  256. void del_at_pos()
  257. {
  258.     int data,flag=0,val,i=0;
  259.     if(start==NULL)
  260.     {
  261.         printf("\n[ No value for Delete ]");
  262.         return;
  263.     }
  264.     else
  265.     {
  266.        
  267.         printf("\n Enter the position from Sll: ");
  268.         scanf("%d",&val);
  269.        
  270.         temp=start;
  271.         if(start->info==val)
  272.         {
  273.             del_beg();
  274.             return;
  275.         }
  276.    
  277.         while(temp!=NULL)
  278.         {
  279.             i++;
  280.             if(1==val)
  281.             {
  282.                 del_beg();
  283.                 return;
  284.              }
  285.             if(i==val)
  286.             {
  287.                 flag=1;
  288.                 prev->next=temp->next;
  289.                 free(temp);
  290.                 break;
  291.                    
  292.             }
  293.             prev=temp;
  294.             temp=temp->next;
  295.         }
  296.         if(flag==0)
  297.         {
  298.             printf("\n [ Invalid Value for delete ]");
  299.         }
  300.         else
  301.         {
  302.             disp();
  303.         }
  304.        
  305.     }
  306.  
  307. }
  308.  
  309. // main functions;
  310. int main()
  311. {
  312.     int ch;
  313.     do
  314.     {
  315.         printf("\n\t===>\tMenu\t<===");
  316.         printf("\n\t1.Insert from begining");
  317.         printf("\n\t2.Insert at the end");
  318.         printf("\n\t3.Insert after specific value");
  319.         printf("\n\t4.Insert after specific position");
  320.         printf("\n\t5.delete from begining");
  321.         printf("\n\t6.delete from End");
  322.         printf("\n\t7.delete specific value");
  323.         printf("\n\t8.Insert after specific position");
  324.         printf("\n\t9.Display");
  325.         printf("\n\t10 EXIT");
  326.         printf("\n\n Enter your choice: ");
  327.         scanf("%d",&ch);
  328.         switch(ch)
  329.         {
  330.             case 1:
  331.                 insert_beg();
  332.                 break;
  333.             case 2:
  334.                 insert_end();
  335.                 break;
  336.             case 3:
  337.                 insert_after_val();
  338.                 break;
  339.             case 4:
  340.                 insert_after_posi();
  341.                 break;
  342.            
  343.             case 5:
  344.                 del_beg();
  345.                 break;
  346.             case 6:
  347.                 del_end();
  348.                 break;
  349.             case 7:
  350.                 del_at_val();
  351.                 break;
  352.             case 8:
  353.                 del_at_pos();
  354.                 break;
  355.    
  356.             case 9:
  357.                 disp();
  358.                 break;
  359.             default:
  360.                 printf("\n (*_*)²");
  361.    
  362.                 break;
  363.            
  364.         }
  365.     }while(ch>=1 && ch<10);
  366.    
  367.    
  368.     return 0;
  369. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement