Advertisement
TechOPGOHIL

Untitled

Dec 1st, 2023
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.98 KB | Source Code | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<alloc.h>
  4. struct node
  5. {
  6.     int no;
  7.     struct node *next,*prv;
  8. };
  9. typedef struct node node;
  10. node *head=NULL;
  11. void create();
  12. void inst_last();
  13. void inst_bwt();
  14. void inst_bwt_before();
  15. void inst_bwt_after();
  16. void del_first();
  17. void del_last();
  18. void del_bwt();
  19. void del_bwt_before();
  20. void del_bwt_after();
  21. void search();
  22. void update();
  23. void sort();
  24. void display();
  25. void main()
  26. {
  27.     int ch;
  28.     clrscr();
  29.     while(1)
  30.     {
  31.         printf("\n1.Create");
  32.         printf("\n2.Insert Last");
  33.         printf("\n3.Insert Between");
  34.         printf("\n4.Insert Between Before");
  35.         printf("\n5.Insert Between After");
  36.         printf("\n6.Delete first");
  37.         printf("\n7.Delete Last");
  38.         printf("\n8.Delete Between");
  39.         printf("\n9.Delete Between Before");
  40.         printf("\n10.Delete Between After");
  41.         printf("\n11.Search Node Using Values");
  42.         printf("\n12.Update Node Values");
  43.         printf("\n13.Display Values");
  44.         printf("\n14.Sort Node Values");
  45.         printf("\n15.Exit - - - - - - - - - - - - - - - - >");
  46.         printf("\nEnter Your Choice :");
  47.         scanf("%d",&ch);
  48.  
  49.             switch(ch)
  50.             {
  51.                 case 1:
  52.                     create();
  53.                     break;
  54.                 case 2:
  55.                     inst_last();
  56.                     break;
  57.                 case 3:
  58.                     inst_bwt();
  59.                     break;
  60.                 case 4:
  61.                     inst_bwt_before();
  62.                     break;
  63.                 case 5:
  64.                     inst_bwt_after();
  65.                     break;
  66.                 case 6:
  67.                     del_first();
  68.                     break;
  69.                 case 7:
  70.                     del_last();
  71.                     break;
  72.                 case 8:
  73.                     del_bwt();
  74.                     break;
  75.                 case 9:
  76.                     del_bwt_before();
  77.                     break;
  78.                 case 10:
  79.                     del_bwt_after();
  80.                     break;
  81.                 case 11:
  82.                     search();
  83.                     break;
  84.                 case 12:
  85.                     update();
  86.                     break;
  87.                 case 13:
  88.                     display();
  89.                     break;
  90.                 case 14:
  91.                     sort();
  92.                     break;
  93.                 case 15:
  94.                     exit();
  95.                     break;
  96.                 default:
  97.                     printf("\n\n\n\n\ninvalid choice\n\n\n\n\n\n");
  98.             }
  99.     }
  100. getch();
  101. }
  102. void create()
  103. {
  104.     node *tmp;
  105.     tmp=(node *)malloc(sizeof(node));
  106.     printf("\nEnter Head Node Value :");
  107.     scanf("%d",&tmp->no);
  108.     tmp->next=NULL;
  109.     tmp->prv=NULL;
  110.         if(head==NULL)
  111.         {
  112.             head=tmp;
  113.             printf("\n\n\n\n\n\n\n\n\nFirst Node Created With Value : %d\n\n\n",tmp->no);
  114.         }
  115.         else
  116.         {
  117.             printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  118.         }
  119. }
  120. void inst_bwt()
  121. {
  122.     node *tmp,*cur=head,*cur1;
  123.     int i=1,p;
  124.     tmp=(node *)malloc(sizeof(node));
  125.     printf("\nEnter position number :");
  126.     scanf("%d",&p);
  127.     printf("\nEnter %d Node Value :",p);
  128.     scanf("%d",&tmp->no);
  129.     tmp->next=NULL;
  130.     tmp->prv=NULL;
  131.         if(head==NULL)
  132.         {
  133.             printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  134.         }
  135.         else
  136.         {
  137.             while(cur->next!=NULL&&i<p)
  138.             {
  139.                 cur1=cur;
  140.                 cur=cur->next;
  141.                 i++;
  142.             }
  143.             cur->prv=tmp;
  144.             tmp->next=cur;
  145.             cur1->next=tmp;
  146.             tmp->prv=cur1;
  147.             printf("\n\n\n\n\n\n\n\n\nPosition Number %d Node Created With Value : %d\n\n\n",p,tmp->no);
  148.         }
  149. }
  150. void inst_bwt_before()
  151. {
  152.     node *tmp,*cur=head,*cur1;
  153.     int i=2,p;
  154.     tmp=(node *)malloc(sizeof(node));
  155.     printf("\nEnter position number :");
  156.     scanf("%d",&p);
  157.     printf("\nEnter %d Node Value :",p);
  158.     scanf("%d",&tmp->no);
  159.     tmp->next=NULL;
  160.     tmp->prv=NULL;
  161.         if(head==NULL)
  162.         {
  163.             printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  164.         }
  165.         else
  166.         {
  167.             while(cur->next!=NULL&i<p)
  168.             {
  169.                 cur1=cur;
  170.                 cur=cur->next;
  171.                 i++;
  172.             }
  173.             cur->prv=tmp;
  174.             tmp->next=cur;
  175.             cur1->next=tmp;
  176.             tmp->prv=cur1;
  177.             printf("\n\n\n\n\n\n\n\n\nPosition Number %d Node Created With Value : %d\n\n\n",p,tmp->no);
  178.         }
  179. }
  180. void del_first()
  181. {
  182.     node *cur=head;
  183.     if(head==NULL)
  184.     {
  185.         printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  186.     }
  187.     else
  188.     {
  189.         head=cur->next;
  190.         head->prv=NULL;
  191.         free(cur);
  192.         printf("\n\n\n\n\n\n\n\n\n\n\n\nFirst Node Deleted\n");
  193.     }
  194. }
  195.  
  196. void del_last()
  197. {
  198.     node *cur=head,*cur1;
  199.     if(head==NULL)
  200.     {
  201.         printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  202.     }
  203.     else
  204.     {
  205.         while(cur->next!=NULL)
  206.         {
  207.             cur1=cur;
  208.             cur=cur->next;
  209.         }
  210.         cur1->next=NULL;
  211.         free(cur);
  212.         printf("\n\n\n\n\n\n\n\n\n\n\n\nFirst Node Deleted\n");
  213.     }
  214. }
  215. void del_bwt()
  216. {
  217.     node *cur=head,*cur1;
  218.     int i=1,p;
  219.     printf("Enter Position Number :");
  220.     scanf("%d",&p);
  221.     if(head==NULL)
  222.     {
  223.         printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  224.     }
  225.     else
  226.     {
  227.         while(cur->next!=NULL&&i<p)
  228.         {
  229.             cur1=cur;
  230.             cur=cur->next;
  231.             i++;
  232.         }
  233.         cur1->next=cur->next;
  234.         cur->next->prv=cur1;
  235.         free(cur);
  236.         printf("\n\n\n\n\nbwt node deleted");
  237.  
  238.     }
  239.  
  240. }
  241. void del_bwt_before()
  242. {
  243.     node *cur=head,*cur1;
  244.     int i=2,p;
  245.     printf("Enter Position Number :");
  246.     scanf("%d",&p);
  247.     if(head==NULL)
  248.     {
  249.         printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  250.     }
  251.     else
  252.     {
  253.         while(cur->next!=NULL&&i<p)
  254.         {
  255.             cur1=cur;
  256.             cur=cur->next;
  257.             i++;
  258.         }
  259.         cur1->next=cur->next;
  260.         cur->next->prv=cur1;
  261.         free(cur);
  262.         printf("\n\n\n\n\nbwt node deleted");
  263.  
  264.     }
  265.  
  266. }
  267.  
  268. void del_bwt_after()
  269. {
  270.     node *cur=head,*cur1;
  271.     int i=0,p;
  272.     printf("Enter Position Number :");
  273.     scanf("%d",&p);
  274.     if(head==NULL)
  275.     {
  276.         printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  277.     }
  278.     else
  279.     {
  280.         while(cur->next!=NULL&&i<p)
  281.         {
  282.             cur1=cur;
  283.             cur=cur->next;
  284.             i++;
  285.         }
  286.         cur1->next=cur->next;
  287.         cur->next->prv=cur1;
  288.         free(cur);
  289.         printf("\n\n\n\n\nbet node deleted");
  290.  
  291.     }
  292. }
  293.  
  294. void inst_bwt_after()
  295. {
  296.     node *tmp,*cur=head,*cur1;
  297.     int i=0,p;
  298.     tmp=(node *)malloc(sizeof(node));
  299.     printf("\nEnter position number :");
  300.     scanf("%d",&p);
  301.     printf("\nEnter %d Node Value :",p);
  302.     scanf("%d",&tmp->no);
  303.     tmp->next=NULL;
  304.     tmp->prv=NULL;
  305.         if(head==NULL)
  306.         {
  307.             printf("\n\n\n\n\n\n\n\n\nYou Can't Create First Node Twice");
  308.         }
  309.         else
  310.         {
  311.             while(cur->next!=NULL&i<p)
  312.             {
  313.                 cur1=cur;
  314.                 cur=cur->next;
  315.                 i++;
  316.             }
  317.             cur->prv=tmp;
  318.             tmp->next=cur;
  319.             cur1->next=tmp;
  320.             tmp->prv=cur1;
  321.             printf("\n\n\n\n\n\n\n\n\nPosition Number %d Node Created With Value : %d\n\n\n",p,tmp->no);
  322.         }
  323. }
  324.  
  325. void inst_last()
  326. {
  327.     node *tmp,*cur=head;
  328.     tmp=(node *)malloc(sizeof(node));
  329.     printf("\nInsert Last Node Value :");
  330.     scanf("%d",&tmp->no);
  331.     tmp->next=NULL;
  332.     tmp->prv=NULL;
  333.         if(head==NULL)
  334.         {
  335.             printf("First Node Was Not Created");
  336.         }
  337.         else
  338.         {
  339.                while(cur->next!=NULL)
  340.                {
  341.                 cur=cur->next;
  342.                }
  343.                tmp->prv=cur;
  344.                cur->next=tmp;
  345.                printf("\n\n\n\n\n\n\n\n\nLast Node Created With Value : %d\n\n\n",tmp->no);
  346.         }
  347. }
  348. void search()
  349. {
  350.     int s,flag=0;
  351.     node *cur=head;
  352.     printf("\n\nEnter Node Value Number To Serch");
  353.     scanf("%d",&s);
  354.     if(head==NULL)
  355.     {
  356.         printf("First Node Was Not Created");
  357.     }
  358.  
  359.     else
  360.     {
  361.         while(cur!=NULL)
  362.         {
  363.             if(cur->no==s)
  364.             {
  365.                 flag=1;
  366.                 break;
  367.             }
  368.             cur=cur->next;
  369.         }
  370.         if(flag==1)
  371.         {
  372.             printf("\n\n\n\n\n\n\n\n\nNode Found\n\n\n",cur->no);
  373.         }
  374.         else
  375.         {
  376.             printf("\n\n\n\n\n\n\nNode Note found Any where In Current Linked-list\n\n\n\n\n\n");
  377.         }
  378.     }
  379. }
  380.  
  381. void update()
  382. {
  383.     int s,u,i=1,flag=0;
  384.     node *cur=head;
  385.     printf("\n\nEnter Node Value Mendetory it is exist in current linked list");
  386.     scanf("%d",&s);
  387.     printf("\n\n\nEnter New Value Which You Want To Update");
  388.     scanf("%d",&u);
  389.     if(head==NULL)
  390.     {
  391.         printf("First Node Was Not Created");
  392.     }
  393.  
  394.     else
  395.     {
  396.         while(cur!=NULL)
  397.         {
  398.             if(cur->no==s)
  399.             {
  400.                 cur->no=u;
  401.                 flag=1;
  402.                 break;
  403.             }
  404.             cur=cur->next;
  405.             i++;
  406.         }
  407.         if(flag==1)
  408.         {
  409.             printf("\n\n\n\n\n\n\n\n\nNode Updated with Value : %d \nNew Node Position Number is :%d \n\n\n",cur->no,i);
  410.         }
  411.         else
  412.         {
  413.             printf("\n\n\n\n\n\n\nNode Note found Any where In Current Linked-list\n\n\n\n\n\n");
  414.         }
  415.     }
  416. }
  417. void sort()
  418. {
  419.     node *cur=head;
  420.     int tmp;
  421.     while(cur->next!=NULL)
  422.     {
  423.         if(cur->no>cur->next->no)
  424.         {
  425.             tmp=cur->next->no;
  426.             cur->next->no=cur->no;
  427.             cur->no=tmp;
  428.         }
  429.         cur=cur->next;
  430.     }
  431. }
  432.  
  433. void display()
  434. {
  435.     node *cur=head;
  436.     int i=1;
  437.      printf("\n\n\n\n\n\n\n\n\n\n\n\nNO | PREVIOUS ADD | NODE VALUE | OWN ADD | NEXT ADD\t|\n");
  438.     while(cur!=NULL)
  439.     {
  440.         printf("%d  |\t%u\t  |\t%d     |  %u\t |  \t%u\t|\n",i,cur->prv,cur->no,cur,cur->next);
  441.         i++;
  442.         cur=cur->next;
  443.     }
  444. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement