JHJiban

Doubly Link List Assignment

Feb 13th, 2020
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.39 KB | None | 0 0
  1. /*
  2. Name: Jiban
  3. ID: 192-15-13117
  4. Section: C
  5. Batch: 53rd
  6. */
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. typedef struct Data
  10. {
  11.     int a;
  12.     struct Data *next, *prev;
  13. } Data;
  14.  
  15. Data *head=NULL;
  16. Data *tail=NULL;
  17.  
  18. void insrt_at_fst(int n)
  19. {
  20.     Data *tmp=head;
  21.     Data *new_node=(Data*) malloc(sizeof  (Data));
  22.     new_node->a=n;
  23.     new_node->next=NULL;
  24.     new_node->prev=NULL;
  25.     if(head==NULL)
  26.     {
  27.         head=new_node;
  28.         tail=head;
  29.         return;
  30.     }
  31.     head->prev=new_node;
  32.     new_node->next=head;
  33.     head=new_node;
  34. }
  35.  
  36. void insrt_at_end(int n)
  37. {
  38.     Data *tmp=head;
  39.     Data *new_node=(Data*) malloc(sizeof  (Data));
  40.     new_node->a=n;
  41.     new_node->next=NULL;
  42.     new_node->prev=NULL;
  43.     if(head==NULL)
  44.     {
  45.         head=new_node;
  46.         tail=head;
  47.         return;
  48.     }
  49.     new_node->prev=tail;
  50.     tail->next=new_node;
  51.     tail=new_node;
  52. }
  53.  
  54. void insrt_at_xth(int x, int n)
  55. {
  56.     Data *tmp=head;
  57.     Data  *new_node=(Data*) malloc(sizeof (Data));
  58.     new_node->a=n;
  59.     new_node->next=NULL;
  60.     new_node->prev=NULL;
  61.  
  62.     if(head==NULL||x==1)
  63.     {
  64.         new_node->next=head;
  65.         head=new_node;
  66.         return;
  67.     }
  68.     x=x-2;
  69.     while(x--&&tmp->next!=NULL)
  70.     {
  71.         tmp=tmp->next;
  72.     }
  73.     new_node->next=tmp->next;
  74.     tmp->next->prev=new_node;
  75.     new_node->prev=tmp;
  76.     tmp->next=new_node;
  77. }
  78.  
  79. void dlt_by_pstn(int x)
  80. {
  81.     Data *tmp=head;
  82.     if(head==NULL)
  83.     {
  84.         printf("No data found!\n");
  85.         return;
  86.     }
  87.     if(x==1)
  88.     {
  89.         head=tmp->next;
  90.         free(tmp);
  91.         return;
  92.     }
  93.     x=x-2;
  94.     while(x-- && tmp->next!=NULL)
  95.     {
  96.         tmp=tmp->next;
  97.     }
  98.     Data *dlt=tmp->next;
  99.     tmp->next=dlt->next;
  100.     free(dlt);
  101.     tmp->next->prev=tmp;
  102. }
  103.  
  104. void dlt_by_vlu(int n)
  105. {
  106.     Data *tmp=head;
  107.     if(head==NULL)
  108.     {
  109.         printf("No match found!\n");
  110.     }
  111.     if(tmp->next==NULL&&tmp->a==n)
  112.     {
  113.         head=tail=NULL;
  114.         free(tmp);
  115.         printf("Deleted integer %d\n",n);
  116.         return;
  117.     }
  118.     if(tmp->a==n)
  119.     {
  120.         head=head->next;
  121.         head->prev=NULL;
  122.         free(tmp);
  123.         printf("Deleted integer %d\n",n);
  124.         return;
  125.     }
  126.     while(tmp->next->a!=n)
  127.     {
  128.         tmp=tmp->next;
  129.     }
  130.     Data *del=tmp->next;
  131.     tmp->next=del->next;
  132.     del->next->prev=tmp;
  133.     free(del);
  134.     printf("Deleted integer %d\n",n);
  135.     return;
  136. }
  137.  
  138. int cnt()
  139. {
  140.     int ct=0;
  141.     Data *tmp=head;
  142.     while(tmp!=NULL)
  143.     {
  144.         ct++;
  145.         tmp=tmp->next;
  146.     }
  147.     printf("Number of integer %d\n",ct);
  148.     return ct;
  149.  
  150. }
  151.  
  152. int add()
  153. {
  154.     int ttl=0;
  155.     Data *tmp=head;
  156.     while(tmp!=NULL)
  157.     {
  158.  
  159.         ttl=ttl+tmp->a;
  160.         tmp=tmp->next;
  161.     }
  162.  
  163.     printf("Sum of inputed integers %d\n",ttl);
  164.     return ttl;
  165. }
  166.  
  167. void avg(float a,float b)
  168. {
  169.     float avg;
  170.     avg=a/b;
  171.     printf("Average of inputed integers %.2f\n",avg);
  172. }
  173.  
  174. void print()
  175. {
  176.     Data *tmp=head;
  177.     while(tmp!=NULL)
  178.     {
  179.         printf("Inputed integer %d\n",tmp->a);
  180.         tmp=tmp->next;
  181.     }
  182. }
  183.  
  184. int main()
  185. {
  186.     float sum,ct;
  187.     head=NULL;
  188.     insrt_at_end(6);
  189.     insrt_at_fst(8);
  190.     insrt_at_end(5);
  191.     insrt_at_fst(9);
  192.     insrt_at_end(1);
  193.     insrt_at_xth(5,4);
  194.     dlt_by_pstn(3);
  195.     sum=add();
  196.     ct=cnt();
  197.     avg(sum,ct);
  198.     dlt_by_vlu(8);
  199.    /*sarch(1);
  200.     */
  201.     print();
  202.     return 0;
  203.  
  204. }
Advertisement
Add Comment
Please, Sign In to add comment