Miti059

all in one

Oct 13th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.33 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct Node
  4. {
  5.     int data;
  6.     struct Node*next, *prev;
  7. }node;
  8. node*head=NULL,*tail;
  9. void insert_end (int data)
  10. {
  11.     node*newnode;
  12.     newnode=(node*)malloc(sizeof(node));
  13.     newnode->data=data;
  14.     newnode->next=NULL;
  15.     newnode->prev=NULL;
  16.     if(head==NULL)
  17.     {
  18.         head=newnode;
  19.         tail=newnode;
  20.     }
  21.     else
  22.     {
  23.         node*current=head;
  24.         while(current->next!=NULL)
  25.         {
  26.             current=current->next;
  27.  
  28.         }
  29.         current->next=newnode;
  30.         newnode->prev=current;
  31.         tail=newnode;
  32.     }
  33. }
  34. void insert_beginning (int data)
  35. {
  36.     node*newnode;
  37.     newnode=(node*)malloc(sizeof(node));
  38.     newnode->data=data;
  39.     newnode->next=NULL;
  40.     newnode->prev=NULL;
  41.     if(head==NULL)
  42.     {
  43.         head=newnode;
  44.         tail=newnode;
  45.     }
  46.     else
  47.     {
  48.         newnode->next=head;
  49.         head->prev=newnode;
  50.         head=newnode;
  51.     }
  52. }
  53. void insert_any_position(int data)
  54. {
  55.     int count=1,n;
  56.     printf("Enter the position: ");
  57.     scanf("%d", &n);
  58.     node*newnode;
  59.     newnode=(node*)malloc(sizeof(node));
  60.     newnode->data=data;
  61.     newnode->next=NULL;
  62.     newnode->prev=NULL;
  63.     if(head==NULL)
  64.     {
  65.         tail=newnode;
  66.         head=newnode;
  67.     }
  68.     else if(n==1)
  69.     {
  70.         newnode->next=head;
  71.         head->prev=newnode;
  72.         head=newnode;
  73.     }
  74.     else
  75.     {
  76.         node*current=head;
  77.         while(count<n-1)
  78.         {
  79.             current=current->next;
  80.             count++;
  81.         }
  82.         if(current->next==NULL)
  83.         {
  84.             tail=newnode;
  85.             current->next=newnode;
  86.             newnode->prev=current;
  87.         }
  88.         else
  89.         {
  90.             newnode->next=current->next;
  91.             current->next->prev=newnode;
  92.             current->next=newnode;
  93.             newnode->prev=current;
  94.         }
  95.     }
  96. }
  97. void del_position()
  98. {
  99.     node*current=head;
  100.     node*previous;
  101.     int count=1,n;
  102.     printf("Enter the position: ");
  103.     scanf("%d", &n);
  104.     if(n==1)
  105.     {
  106.         head=head->next;
  107.         head->prev=NULL;
  108.         free(current);
  109.  
  110.     }
  111.     else
  112.     {
  113.         node*current=head;
  114.         while(count<n)
  115.         {
  116.             previous=current;
  117.             current=current->next;
  118.             count++;
  119.         }
  120.         if(current->next==NULL)
  121.         {
  122.             previous->next=NULL;
  123.             tail=previous;
  124.             free(current);
  125.         }
  126.         else
  127.         {
  128.             previous->next=current->next;
  129.             current->next->prev=previous;
  130.             free(current);
  131.         }
  132.     }
  133. }
  134. void del_data()
  135. {
  136.     node*current=head;
  137.     node*previous;
  138.     printf("Which data you want to delete : ");
  139.     int n;
  140.     scanf("%d", &n);
  141.     if(head->data==n)
  142.     {
  143.         head=head->next;
  144.         head->prev=NULL;
  145.         free(current);
  146.     }
  147.     else
  148.     {
  149.         while(current!=NULL && current->data!=n)
  150.         {
  151.             previous=current;
  152.             current=current->next;
  153.         }
  154.         if(current!=NULL)
  155.         {
  156.             if(current->next==NULL)
  157.             {
  158.                 previous->next==NULL;
  159.                 tail=previous;
  160.                 free(current);
  161.  
  162.             }
  163.             else
  164.             {
  165.                 previous->next=current->next;
  166.                 current->next->prev=previous;
  167.                 free(current);
  168.             }
  169.         }
  170.         else
  171.         {
  172.             printf("Data not founf\n");
  173.         }
  174.     }
  175. }
  176. void searchdata()
  177. {
  178.     node*current=head;
  179.     int f=0,n;
  180.     printf("search data : ");
  181.     scanf("%d", &n);
  182.     while(current!=NULL)
  183.     {
  184.         if(current->data==n)
  185.         {
  186.             f=1;
  187.             break;
  188.         }
  189.         current=current->next;
  190.     }
  191.     if(f==1)
  192.     {
  193.         printf("found data\n");
  194.     }
  195.     else
  196.     {
  197.         printf("Not found data\n");
  198.     }
  199. }
  200.  
  201. void searchdata2()
  202. {
  203.     node*current=tail;
  204.     int f=0,n;
  205.     printf("search data : ");
  206.     scanf("%d", &n);
  207.     while(current!=NULL)
  208.     {
  209.         if(current->data==n)
  210.         {
  211.             f=1;
  212.             break;
  213.         }
  214.         current=current->prev;
  215.     }
  216.     if(f==1)
  217.     {
  218.         printf("found data\n");
  219.     }
  220.     else
  221.     {
  222.         printf("Not found data\n");
  223.     }
  224. }
  225. void countdata()
  226. {
  227.     node*current=head;
  228.     int count=0;
  229.     while(current!=NULL)
  230.     {
  231.         count++;
  232.         current=current->next;
  233.     }
  234.     printf("Total node= %d\n",count);
  235. }
  236.  
  237. void countdata2()
  238. {
  239.     node*current=tail;
  240.     int count=0;
  241.     while(current!=NULL)
  242.     {
  243.         count++;
  244.         current=current->prev;
  245.     }
  246.     printf("Total node= %d\n",count);
  247. }
  248. void sumdata()
  249. {
  250.     node*current=head;
  251.     int sum=0;
  252.     while(current!=NULL)
  253.     {
  254.         sum=sum+current->data;
  255.         current=current->next;
  256.     }
  257.     printf("Total node= %d\n",sum);
  258. }
  259.  
  260. void sumdata2()
  261. {
  262.     node*current=tail;
  263.     int sum=0;
  264.     while(current!=NULL)
  265.     {
  266.         sum=sum+current->data;
  267.         current=current->prev;
  268.     }
  269.     printf("Total node= %d\n",sum);
  270. }
  271. void print()  
  272. {
  273.     node*current=head;
  274.     printf("Newlist is: ");
  275.     while(current!=NULL)
  276.     {
  277.         printf("%d ",current->data);
  278.         current=current->next;
  279.     }
  280.     printf("\n\n");
  281. }
  282. void print2()
  283. {
  284.     node*current=tail;
  285.     printf("Newlist is: ");
  286.     while(current!=NULL)
  287.     {
  288.         printf("%d ",current->data);
  289.         current=current->prev;
  290.     }
  291.     printf("\n\n");
  292. }
  293. int main()
  294. {
  295.     int i,n,num,t,r,y;
  296.     printf("Enter The Elements: ");
  297.     scanf("%d",&num);
  298.     for(i=1; i<=num; i++)
  299.     {
  300.         printf("Enter The number: ");
  301.         scanf("%d",&n);
  302.         printf("1.End! 2.beginning\n");
  303.         printf("3.Any position!\n");
  304.         scanf("%d",&t);
  305.         if(t==1) insert_end(n);
  306.         else if(t==2)insert_beginning(n);
  307.         else if(t==3) insert_any_position(n);
  308.  
  309.         print();
  310.     }
  311.     printf("How many data you want to delete: ");
  312.     scanf("%d",&r);
  313.     printf("\n");
  314.     while(r--)
  315.     {
  316.         printf("1.Delete data 2.Delete Position\n");
  317.         scanf("%d",&y);
  318.         if(y==2) del_position();
  319.         if(y==1) del_data();
  320.         print();
  321.         print2();
  322.     }
  323.  
  324.     countdata();
  325.     countdata2();
  326.     sumdata();
  327.     sumdata2();
  328.     searchdata();
  329.     searchdata2();
  330.     return 0;
  331. }
Advertisement
Add Comment
Please, Sign In to add comment