Advertisement
muftY

doubly del_by_pos riad v er moto but prblm

Feb 24th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.07 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct data
  4. {
  5.     int a;
  6.     struct data *next;
  7.     struct data *prev;
  8. } data;
  9.  
  10. data *head=NULL;
  11. data *tail=NULL;
  12.  
  13.  
  14. void ins_at_first(int x)
  15. {
  16.     data *new_node=(data*)malloc(sizeof(data));
  17.     new_node->a=x;
  18.     new_node->next=NULL;
  19.     new_node->prev=NULL;
  20.  
  21.     if(head==NULL)
  22.  
  23.     {
  24.         head=new_node;
  25.         return;
  26.     }
  27.     new_node->next=head;
  28.     head->prev=new_node;
  29.     head=new_node;
  30.  
  31.     return;
  32. }
  33. void ins_at_end(int x)
  34. {
  35.     data *new_node=(data*)malloc(sizeof(data));
  36.     new_node->a=x;
  37.     new_node->next=NULL;
  38.     new_node->prev=NULL;
  39.  
  40.     if(head==NULL)
  41.     {
  42.         head=new_node;
  43.         return;
  44.     }
  45.     data *temp=head;
  46.     while(temp->next!=NULL)
  47.     {
  48.         temp=temp->next;
  49.     }
  50.     new_node->prev=temp;
  51.     temp->next=new_node;
  52.  
  53.     return;
  54. }
  55.  
  56. void ins_at_nth(int n, int x)
  57. {
  58.     data *new_node=(data*)malloc(sizeof(data));
  59.     new_node->a=x;
  60.     new_node->next=NULL;
  61.     new_node->prev=NULL;
  62.  
  63.     if(head==NULL)
  64.     {
  65.         head=new_node;
  66.         return;
  67.     }
  68.  
  69.     if(n==1)
  70.     {
  71.         head->next=new_node;
  72.         new_node->prev=head;
  73.  
  74.         return;
  75.     }
  76.  
  77.     data *temp=head;
  78.     n=n-2;
  79.  
  80.     while(n--)
  81.     {
  82.         temp=temp->next;
  83.         if(temp->next==NULL)
  84.         {
  85.             new_node->prev=temp;
  86.             temp->next=new_node;
  87.  
  88.             return;
  89.         }
  90.     }
  91.     new_node->next=temp->next;
  92.     new_node->prev=temp;
  93.     temp->next=new_node;
  94.  
  95.  
  96.     return;
  97.  
  98.  
  99.  
  100. }
  101.  
  102. void del_by_pos(int n)
  103. {
  104.     if(head==NULL)
  105.     {
  106.         printf("\n      List was Empty Previously\n\n");
  107.         return;
  108.     }
  109.  
  110.  
  111.  
  112.     if(n==1)
  113.     {
  114.        data *del=head;
  115.        head=head->next;
  116.         if(head==NULL)
  117.         {
  118.  
  119.             tail=NULL;
  120.  
  121.             free(del);
  122.  
  123.             return;
  124.         }
  125.  
  126.         head->prev=NULL;
  127.         free(del);
  128.  
  129.         return;
  130.  
  131.     }
  132.     data *del=NULL;
  133.     data *temp=head;
  134.     n=n-2;
  135.     while(n-- && temp->next!=NULL)
  136.     {
  137.         temp=temp->next;
  138.  
  139.     }
  140.     del=temp->next;
  141.  
  142.     if(del==tail)
  143.     {
  144.         temp=tail;
  145.         temp->next=NULL;
  146.  
  147.         free(del);
  148.         return;
  149.     }
  150.     temp->next=del->next;
  151.     del->next->prev=temp;
  152.  
  153.     free(del);
  154.     return;
  155. }
  156.  
  157.  
  158.  
  159.  
  160.  
  161. void reset()
  162. {
  163.     head=NULL;
  164.     tail=NULL;
  165.     return;
  166. }
  167.  
  168. void print()
  169. {
  170.     data *temp=head;
  171.     if(head==NULL)
  172.     {
  173.         printf("Empty\n");
  174.  
  175.     }
  176.  
  177.     while(temp!=NULL)
  178.     {
  179.         printf("%d ",temp->a);
  180.         temp=temp->next;
  181.     }
  182.     printf("\n");
  183. }
  184.  
  185. int main()
  186. {
  187.     int a,v,w,x,n,m,o;
  188.     while(1)
  189.     {
  190.         printf("1.Insert At First\n");
  191.         printf("2.Insert At End\n");
  192.         printf("3.Insert At n_th Position\n");
  193.  
  194.         printf("4.Delete By Position\n");
  195.         printf("5.Delete By Value\n");
  196.  
  197.         printf("8.Print\n");
  198.         printf("9.RESET LINK LIST\n");
  199.  
  200.         printf("\n 0 for Al-Bida{-)\n");
  201.         printf("\n             Command:");
  202.         scanf("%d",&w);
  203.         if(w==1)
  204.         {
  205.             printf("Enter an integer Number:");
  206.             scanf("%d",&x);
  207.             ins_at_first(x);
  208.  
  209.         }
  210.         if(w==2)
  211.         {
  212.             printf("Enter an integer Number:");
  213.             scanf("%d",&x);
  214.             ins_at_end(x);
  215.         }
  216.         if(w==3)
  217.         {
  218.             printf("Declear The Position:");
  219.             scanf("%d",&n);
  220.             printf("Enter an integer Number:");
  221.             scanf("%d",&x);
  222.             ins_at_nth(n,x);
  223.         }
  224.  
  225.         if(w==4)
  226.         {
  227.             printf("\nDeclear The Specific Position:");
  228.             scanf("%d",&n);
  229.  
  230.             del_by_pos(n);
  231.  
  232.         }
  233.  
  234.  
  235.         if(w==8)
  236.         {
  237.             printf("\n            Result: ");
  238.             print();
  239.             printf("\n");
  240.         }
  241.  
  242.         if(w==9)
  243.         {
  244.             printf("\n      Reseted Successfully\n");
  245.             reset();
  246.         }
  247.  
  248.         if(w==0)
  249.         {
  250.             printf("\n    Jajakalla_khayer..[muftY]\n");
  251.             break;
  252.         }
  253.     }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement