Advertisement
RAJIBRAJU

doubly link list

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