Advertisement
Mostafiz543

Doubly list

Oct 14th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.43 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct node
  4. {
  5.     int a;
  6.     char s[20];
  7.     struct node *next;
  8.     struct node *prev;
  9. } node;
  10. node *head=NULL,*tail=NULL;
  11. void displaylst()
  12. {
  13.     int ch;
  14.     node *list=tail;
  15.     if(head==NULL)
  16.     {
  17.         printf("NO Data Available!!\n\n ");
  18.     }
  19.     else
  20.     {
  21.         while(list!=NULL)
  22.         {
  23.             printf("\nName: %s\n",list->s);
  24.             printf("Age: %d\n\n",list->a);
  25.             list=list->prev;
  26.         }
  27.     }
  28.     printf("         1.Menu\n");
  29.     printf("         2.Exit\n");
  30.     printf("Press Any Option:");
  31.     scanf("%d",&ch);
  32.     switch(ch)
  33.     {
  34.     case 1:
  35.     {
  36.         menu();
  37.     }
  38.     case 2:
  39.     {
  40.         exit(0);
  41.     }
  42.  
  43.     default:
  44.     {
  45.  
  46.         printf("You Choose Wrong Option!!\a\n\n");
  47.         menu();
  48.         break;
  49.     }
  50.  
  51.     }
  52. }
  53.  
  54. void displayfrst()
  55. {
  56.     int ch;
  57.     node *list=head;
  58.     if(head==NULL)
  59.     {
  60.         printf("  NO Data Available!!\n\n ");
  61.     }
  62.     else
  63.     {
  64.         while(list!=NULL)
  65.         {
  66.             printf("\nName: %s\n",list->s);
  67.  
  68.             printf("Age: %d\n\n",list->a);
  69.             list=list->next;
  70.         }
  71.     }
  72.     printf("         1.Menu\n");
  73.     printf("         2.Exit\n");
  74.     printf("Press Any Option:");
  75.     scanf("%d",&ch);
  76.     switch(ch)
  77.     {
  78.     case 1:
  79.     {
  80.         menu();
  81.     }
  82.     case 2:
  83.     {
  84.         exit(0);
  85.     }
  86.  
  87.     default:
  88.     {
  89.  
  90.         printf("You Choose Wrong Option!!\a\n\n");
  91.         menu();
  92.         break;
  93.     }
  94.  
  95.     }
  96. }
  97.  
  98. void display()
  99. {
  100.     int ch,n;
  101.     printf("       1.Display 1st To Last\n");
  102.     printf("       2.Display Last To 1st\n");
  103.     printf("Choose Any Option:");
  104.     scanf("%d",&n);
  105.     switch(n)
  106.     {
  107.     case 1:
  108.     {
  109.         displayfrst();
  110.         break;
  111.     }
  112.     case 2:
  113.     {
  114.         displaylst();
  115.         break;
  116.     }
  117.     default:
  118.     {
  119.         printf("You Choose Wrong Option!!\a\n\n");
  120.         menu();
  121.         break;
  122.     }
  123.     }
  124. }
  125. void searchpos()
  126. {
  127.     int ch,n;
  128.     node *list=head;
  129.     printf("Enter Your Position:");
  130.     scanf("%d",&n);
  131.     if(n==1)
  132.     {
  133.         printf("Name: %s\n",list->s);
  134.         printf("Age: %d\n\n",list->a);
  135.     }
  136.     else
  137.     {
  138.         n=n-2;
  139.         while(n!=0&&list->next!=NULL)
  140.         {
  141.             list=list->next;
  142.             n--;
  143.         }
  144.         if(list->next==NULL)
  145.         {
  146.             printf("No Information Available!!\n\n");
  147.         }
  148.         else
  149.         {
  150.             printf("Name: %s\n",list->next->s);
  151.             printf("Age: %d\n\n",list->next->a);
  152.         }
  153.     }
  154.     printf("         1.Menu\n");
  155.     printf("         2.Exit\n");
  156.     printf("Press Any Option:");
  157.     scanf("%d",&ch);
  158.     switch(ch)
  159.     {
  160.     case 1:
  161.     {
  162.         menu();
  163.     }
  164.     case 2:
  165.     {
  166.         exit(0);
  167.     }
  168.  
  169.     default:
  170.     {
  171.  
  172.         printf("You Choose Wrong Option!!\a\n\n");
  173.         menu();
  174.         break;
  175.     }
  176.  
  177.     }
  178. }
  179.  
  180. void searchval()
  181. {
  182.     node *list=head;
  183.     int ch,v;
  184.     printf("Enter Your Age:");
  185.     scanf("%d",&v);
  186.     if(list->a==v)
  187.     {
  188.         printf("Name: %s\n",list->s);
  189.         printf("Age: %d\n\n",list->a);
  190.     }
  191.     else
  192.     {
  193.         while(list->a!=v)
  194.         {
  195.             list=list->next;
  196.             if(list==NULL)
  197.             {
  198.                 break;
  199.             }
  200.         }
  201.         if(list==NULL)
  202.         {
  203.             printf("  No Information Available!!\n\n");
  204.         }
  205.         else
  206.         {
  207.             printf("Name: %s\n",list->next->s);
  208.             printf("Age: %d\n\n",list->next->a);
  209.         }
  210.     }
  211.     printf("           1.Menu\n");
  212.     printf("           2.Exit\n");
  213.     printf("Press Any Option:");
  214.     scanf("%d",&ch);
  215.     switch(ch)
  216.     {
  217.     case 1:
  218.     {
  219.         menu();
  220.     }
  221.     case 2:
  222.     {
  223.         exit(0);
  224.     }
  225.  
  226.     default:
  227.     {
  228.  
  229.         printf("You Choose Wrong Option!!\a\n\n");
  230.         menu();
  231.         break;
  232.     }
  233.  
  234.     }
  235. }
  236.  
  237. void search()
  238. {
  239.     int ch;
  240.     printf("        1.Search By Value\n");
  241.     printf("        2.Search By Position\n");
  242.     printf("Choose Any Option:");
  243.     scanf("%d",&ch);
  244.     switch(ch)
  245.     {
  246.     case 1:
  247.     {
  248.         searchval();
  249.         break;
  250.     }
  251.     case 2:
  252.     {
  253.         searchpos();
  254.         break;
  255.     }
  256.     default :
  257.     {
  258.         printf("You Choose Wrong Option!!\n");
  259.         menu();
  260.         break;
  261.  
  262.     }
  263.     }
  264. }
  265.  
  266. void deletepos()
  267. {
  268.     int n,ch;
  269.     node *list=head,*temp;
  270.     printf("please enter position:");
  271.     scanf("%d",&n);
  272.     if(head==NULL)
  273.     {
  274.         printf("NO DATA FOR DELETE\n");
  275.     }
  276.     else if(n==1)
  277.     {
  278.         if(head->next==NULL)
  279.         {
  280.             head=NULL;
  281.             printf("     Data Deleted!!\n\n");
  282.         }
  283.         else
  284.         {
  285.             head=list->next;
  286.             head->prev=NULL;
  287.             free(list);
  288.         }
  289.  
  290.     }
  291.     else
  292.     {
  293.  
  294.         n=n-2;
  295.         while(n!=0&&list->next!=NULL)
  296.         {
  297.             list=list->next;
  298.             n--;
  299.         }
  300.  
  301.         if(list->next==NULL)
  302.         {
  303.             printf("  You Choose Wrong Position!!\a\n\n");
  304.         }
  305.         else if(list->next->next==NULL&&n==0)
  306.         {
  307.             temp=tail;
  308.             tail=tail->prev;
  309.             tail->next=NULL;
  310.             free(temp);
  311.             printf("    Block No: %d is Deleted!!\n\n",n);
  312.         }
  313.         else
  314.         {
  315.             temp=list->next;
  316.             temp->next->prev=list;
  317.             list->next=temp->next;
  318.             free(temp);
  319.             printf("    Block No: %d is Deleted!!\n\n",n);
  320.         }
  321.     }
  322.     printf("           1.Menu\n");
  323.     printf("           2.Exit\n");
  324.     printf("Press Any Option:");
  325.     scanf("%d",&ch);
  326.     switch(ch)
  327.     {
  328.     case 1:
  329.     {
  330.         menu();
  331.     }
  332.     case 2:
  333.     {
  334.         exit(0);
  335.     }
  336.  
  337.     default:
  338.     {
  339.  
  340.         printf("You Choose Wrong Option!!\a\n\n");
  341.         menu();
  342.         break;
  343.     }
  344.  
  345.     }
  346.  
  347. }
  348. void deleteval()
  349. {
  350.     int n,ch;
  351.     node *list=head,*temp=NULL;
  352.     printf("please enter age:");
  353.     scanf("%d",&n);
  354.     if(head==NULL)
  355.     {
  356.         printf("No Information Available!!\n\n");
  357.     }
  358.     else if(list->a==n)
  359.     {
  360.         if(list->next==NULL)
  361.         {
  362.             head=NULL;
  363.             tail=NULL;
  364.             printf("   Data Deleted!!\n\n");
  365.             free(list);
  366.         }
  367.         else
  368.         {
  369.             temp=list;
  370.             list=list->next;
  371.             list->prev=NULL;
  372.             head=list;
  373.             free(temp);
  374.             printf("   Data Deleted!!\n\n");
  375.         }
  376.  
  377.     }
  378.     else
  379.     {
  380.         while(list->a!=n)
  381.         {
  382.             list=list->next;
  383.             if(list==NULL)
  384.             {
  385.                 break;
  386.             }
  387.         }
  388.  
  389.         if(list == NULL)
  390.         {
  391.  
  392.  
  393.             printf("      No Value Available\n\n");
  394.         }
  395.  
  396.         else if(list->a==n&&list->next==NULL)
  397.         {
  398.             list=tail;
  399.             temp=list;
  400.             list->prev->next=temp->next;
  401.             tail=list->prev;
  402.             free(temp);
  403.             printf("    Data Deleted!!\n\n");
  404.         }
  405.  
  406.  
  407.  
  408.  
  409.  
  410.         else
  411.         {
  412.             temp=list;
  413.             list->prev->next=temp->next;
  414.             temp->next->prev=list->prev;
  415.             free(temp);
  416.             printf("    Data Deleted!!\n\n");
  417.         }
  418.     }
  419.  
  420.     printf("           1.Menu\n");
  421.     printf("           2.Exit\n");
  422.     printf("Press Any Option:");
  423.     scanf("%d",&ch);
  424.     switch(ch)
  425.     {
  426.     case 1:
  427.     {
  428.         menu();
  429.     }
  430.     case 2:
  431.     {
  432.         exit(0);
  433.     }
  434.  
  435.     default:
  436.     {
  437.  
  438.         printf("You Choose Wrong Option!!\a\n\n");
  439.         menu();
  440.         break;
  441.     }
  442.  
  443.     }
  444.  
  445. }
  446.  
  447. void Delete()
  448. {
  449.     int ch,n;
  450.     printf("         1.Delete By Value\n");
  451.     printf("         2.Delete By Position\n");
  452.     printf("Choose Any Option:");
  453.     scanf("%d",&ch);
  454.     switch(ch)
  455.     {
  456.     case 1:
  457.     {
  458.         deleteval();
  459.         break;
  460.     }
  461.     case 2:
  462.     {
  463.         deletepos();
  464.         break;
  465.     }
  466.     default:
  467.     {
  468.         printf("You Choose Wrong Option!!\a\n\n");
  469.         menu();
  470.         break;
  471.     }
  472.     }
  473.  
  474. }
  475.  
  476. void addpos()
  477. {
  478.     int p,ch;
  479.     node *list=head;
  480.     node *n=(node*)malloc(sizeof(node));
  481.     n->prev=NULL;
  482.     n->next=NULL;
  483.     printf("\nName:");
  484.     scanf(" %s[^\n]",n->s);
  485.     printf("Age:");
  486.     scanf("%d",&n->a);
  487.     printf("Enter Your Position:");
  488.     scanf("%d",&p);
  489.     if(p==1)
  490.     {
  491.         if(head==NULL)
  492.         {
  493.             head=n;
  494.             tail=n;
  495.         }
  496.         else
  497.         {
  498.             head->prev=n;
  499.             n->next=head;
  500.             head=n;
  501.         }
  502.  
  503.     }
  504.     else
  505.     {
  506.         p=p-2;
  507.         while(p!=0&&list->next!=NULL)
  508.         {
  509.             list=list->next;
  510.             p--;
  511.         }
  512.         if(list->next==NULL)
  513.         {
  514.             tail->next=n;
  515.             n->prev=tail;
  516.             tail=n;
  517.         }
  518.         else
  519.         {
  520.             n->next=list->next;
  521.             list->next->prev=n;
  522.             n->prev=list;
  523.  
  524.             list->next=n;
  525.         }
  526.     }
  527.     printf("           1.Menu\n");
  528.     printf("                 2.Exit\n");
  529.     printf("Press any Option:");
  530.     scanf("%d",&ch);
  531.     switch(ch)
  532.     {
  533.     case 1:
  534.     {
  535.         menu();
  536.     }
  537.     case 2:
  538.     {
  539.         exit(0);
  540.     }
  541.  
  542.     default:
  543.     {
  544.  
  545.         printf("You Choose Wrong Option!!\a\n\n");
  546.         menu();
  547.         break;
  548.     }
  549.     }
  550.  
  551. }
  552.  
  553.  
  554. void addlast()
  555. {
  556.     int ch;
  557.     node *n=(node*)malloc(sizeof(node));
  558.     n->prev=NULL;
  559.     n->next=NULL;
  560.     printf("\nName:");
  561.     scanf(" %s[^\n]",n->s);
  562.     printf("Age:");
  563.     scanf("%d",&n->a);
  564.  
  565.     if(head==NULL&&tail==NULL)
  566.     {
  567.         head=n;
  568.         tail=n;
  569.     }
  570.     else
  571.     {
  572.         tail->next=n;
  573.         n->prev=tail;
  574.         tail=n;
  575.     }
  576.     printf("        1.Menu\n");
  577.     printf("            2.Exit\n");
  578.     printf("Press any Option:");
  579.     scanf("%d",&ch);
  580.     switch(ch)
  581.     {
  582.     case 1:
  583.     {
  584.         menu();
  585.     }
  586.     case 2:
  587.     {
  588.         exit(0);
  589.     }
  590.  
  591.     default:
  592.     {
  593.  
  594.         printf("You Choose Wrong Option!!\a\n\n");
  595.         menu();
  596.         break;
  597.     }
  598.     }
  599. }
  600.  
  601.  
  602. void addfirst()
  603. {
  604.     int ch;
  605.     node *n=(node*)malloc(sizeof(node));
  606.     n->prev=NULL;
  607.     n->next=NULL;
  608.     printf("\nName:");
  609.     scanf(" %s[^\n]",n->s);
  610.     printf("Age:");
  611.     scanf("%d",&n->a);
  612.  
  613.     if(head==NULL&&tail==NULL)
  614.     {
  615.         head=n;
  616.         tail=n;
  617.     }
  618.     else
  619.     {
  620.         head->prev=n;
  621.         n->next=head;
  622.         head=n;
  623.     }
  624.  
  625.     printf("        1.Menu\n");
  626.     printf("        2.Exit\n");
  627.     printf("Press any Option:");
  628.     scanf("%d",&ch);
  629.     switch(ch)
  630.     {
  631.     case 1:
  632.     {
  633.         menu();
  634.     }
  635.     case 2:
  636.     {
  637.         exit(0);
  638.     }
  639.  
  640.     default:
  641.     {
  642.  
  643.         printf("You Choose Wrong Option!!\a\n\n");
  644.         menu();
  645.         break;
  646.     }
  647.     }
  648. }
  649. void add()
  650. {
  651.     int ch;
  652.     printf("              1.Add At First\n");
  653.     printf("              2.Add At Last\n");
  654.     printf("              3.Add By position\n");
  655.     printf("Choose any Option:");
  656.     scanf("%d",&ch);
  657.     switch(ch)
  658.     {
  659.     case 1:
  660.     {
  661.         addfirst();
  662.         break;
  663.     }
  664.     case 2:
  665.     {
  666.         addlast();
  667.         break;
  668.     }
  669.     case 3:
  670.     {
  671.         addpos();
  672.         break;
  673.     }
  674.     default:
  675.     {
  676.         printf("You Choose Wrong Option!!\a\n\n");
  677.         menu();
  678.         break;
  679.     }
  680.     }
  681. }
  682. void menu()
  683. {
  684.     int n;
  685.  
  686.     printf("\n\n");
  687.     printf("              1.Add\n");
  688.     printf("             2.Search\n");
  689.     printf("           3.Delete\n");
  690.     printf("        4.Display\n");
  691.     printf("      5.Exit\n\n");
  692.     printf("Choose any Option:");
  693.     scanf("%d",&n);
  694.     switch(n)
  695.     {
  696.     case 1:
  697.     {
  698.         add();
  699.         break;
  700.     }
  701.     case 2:
  702.     {
  703.         search();
  704.         break;
  705.     }
  706.     case 3:
  707.     {
  708.         Delete();
  709.         break;
  710.     }
  711.     case 4:
  712.     {
  713.         display();
  714.         break;
  715.     }
  716.     case 5:
  717.     {
  718.         exit(0);
  719.         break;
  720.     }
  721.     default:
  722.     {
  723.         printf("You Choose Wrong Option!!\a\n\n");
  724.         menu();
  725.         break;
  726.     }
  727.     }
  728. }
  729.  
  730. int main()
  731. {
  732.     printf("                 DOUBLY LINK LIST\n");
  733.     printf("               ______________________\n");
  734.     printf("               ______________________\n");
  735.     menu();
  736.     return 0;
  737. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement