Advertisement
Radoan_Ahmed

Untitled

Oct 13th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.19 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct st_info
  4. {
  5.     char name[50];
  6.     int roll;
  7.     struct st_info *next;
  8. } data;
  9. data *head = NULL;
  10. data *list = NULL;
  11.  
  12.  
  13. display()
  14. {
  15.     list = head;
  16.     while(list != NULL)
  17.     {
  18.         printf("%s\n",list -> name);
  19.         printf("%d\n",list -> roll);
  20.         list = list -> next;
  21.     }
  22.  
  23. }
  24.  
  25.  
  26. void make_node(int n)
  27. {
  28.     int i;
  29.     if(n==0)
  30.     {
  31.         head == NULL;
  32.     }
  33.     else
  34.     {
  35.         for(i=0; i<n; i++)
  36.         {
  37.             data *N = (data*)malloc(sizeof(data));
  38.             scanf(" %[^\n]s",N -> name);
  39.             scanf("%d",&N -> roll);
  40.             N -> next = NULL;
  41.             if(head == NULL)
  42.             {
  43.                 head = N;
  44.                 list = head;
  45.             }
  46.             else
  47.             {
  48.                 list -> next = N;
  49.                 list = list -> next;
  50.             }
  51.         }
  52.     }
  53. }
  54.  
  55.  
  56. void add_in_last()
  57. {
  58.     list = head;
  59.     data *p = (data*)malloc(sizeof(data));
  60.     scanf(" %[^\n]s",p -> name);
  61.     scanf("%d",&p -> roll);
  62.     p -> next = NULL;
  63.     while(list -> next!= NULL)
  64.     {
  65.         list = list -> next;
  66.     }
  67.     list -> next = p;
  68.  
  69. }
  70.  
  71. void insert_at_first()
  72. {
  73.     data *q = (data*)malloc(sizeof(data));
  74.     scanf(" %[^\n]s",q -> name);
  75.     scanf("%d",&q -> roll);
  76.     list = head;
  77.     if(head == NULL)
  78.     {
  79.         head = q;
  80.  
  81.     }
  82.     else
  83.     {
  84.         q -> next = head;
  85.         head = q;
  86.     }
  87. }
  88.  
  89. void insert_in_nth(int n)
  90. {
  91.     data * temp = NULL;
  92.     int count = 0;
  93.     list = head;
  94.     data *r = (data*)malloc(sizeof(data));
  95.     scanf(" %[^\n]s",r -> name);
  96.     scanf("%d",&r -> roll);
  97.     r -> next = NULL;
  98.     if(head == NULL)
  99.     {
  100.         head = r;
  101.  
  102.     }
  103.     else
  104.     {
  105.         while(list != NULL)
  106.         {
  107.             temp = list -> next;
  108.             count++;
  109.             if(count == n)
  110.             {
  111.                 list -> next = r;
  112.                 r -> next = temp;
  113.             }
  114.             list = list -> next;
  115.         }
  116.     }
  117.  
  118.  
  119.  
  120. }
  121.  
  122. void delete_by_pos(int n)
  123. {
  124.     int i;
  125.     data *temp1=head;
  126.     if(n==1)
  127.     {
  128.         head = temp1->next;
  129.         free(temp1);
  130.         return;
  131.     }
  132.     for(i=1; i<n-1; i++)
  133.     {
  134.         temp1 = temp1 -> next;
  135.     }
  136.     data *temp2 = temp1 -> next;
  137.     temp1 -> next = temp2 -> next;
  138.     free(temp2);
  139. }
  140.  
  141. void delete_by_valu(int n)
  142. {
  143.     data *list = head;
  144.     data *temp1=list;
  145.     while(list!=NULL)
  146.     {
  147.         if(head -> roll ==n)
  148.         {
  149.             head = temp1 -> next;
  150.             free(temp1);
  151.             return;
  152.         }
  153.         else
  154.         {
  155.             if(list -> roll == n)
  156.             {
  157.                 data *temp2 = temp1 -> next;
  158.                 temp1 -> next = temp2 -> next;
  159.                 free(temp2);
  160.                 return;
  161.             }
  162.             temp1 = list;
  163.             list = list -> next;
  164.         }
  165.     }
  166. }
  167.  
  168. void search_by_pos(int n)
  169. {
  170.     data *list = head;
  171.     int i;
  172.     //data *temp = list;
  173.    for(i=1;i<n;i++)
  174.    {
  175.        list = list -> next;
  176.    }
  177.    printf("%s\n",list -> name);
  178. }
  179.  
  180. void search_by_valu(int n)
  181. {
  182.     data *list = head;
  183.     while(list !=NULL)
  184.     {
  185.         if(list -> roll = n )
  186.         {
  187.             printf("%s",list -> name);
  188.             return;
  189.         }
  190.         else
  191.             list = list -> next;
  192.     }
  193. }
  194.  
  195. main()
  196. {
  197.     int n,m,x,y,z,h;
  198.     scanf("%d",&n);
  199.     printf(".............\n");
  200.     make_node(n);
  201.     printf(".............\n");
  202.     display();
  203.     printf(".............\n");
  204.  
  205.     add_in_last();
  206.     printf(".............\n");
  207.     display();
  208.     printf(".............\n");
  209.     insert_at_first();
  210.     printf(".............\n");
  211.     display();
  212.     printf(".............\n");
  213.     scanf("%d",&m);
  214.     insert_in_nth( m);
  215.     printf(".............\n");
  216.     display();
  217.     printf(".............\n");
  218.     scanf("%d",&x);
  219.     delete_by_pos(x);
  220.     printf(".............\n");
  221.     display();
  222.     scanf("%d",&y);
  223.     delete_by_valu(y);
  224.     printf(".............\n");
  225.     display();
  226.     printf(".............\n");
  227.     scanf("%d",&z);
  228.     search_by_pos(z);
  229.     printf(".............\n");
  230.     scanf("%d",&h);
  231.     search_by_valu(h);
  232.  
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement