Advertisement
Guest User

Untitled

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