Advertisement
Idanref

Check common sum - Stacks

Mar 26th, 2021
501
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #include "Stack.h"
  6.  
  7. typedef int stack_type;
  8. #define MAXSTACK 100
  9. // create_stack, push, pop, stack_top, stack_is_empty, stack_is_full, stack_size
  10.  
  11. void main()
  12. {
  13.     Stack s1, s2;
  14.  
  15.     create_stack(&s1);
  16.     create_stack(&s2);
  17.  
  18.     push(5, &s1);
  19.     push(4, &s1);
  20.     push(3, &s1);
  21.     push(2, &s1);
  22.     push(1, &s1);
  23.  
  24.     push(8, &s2);
  25.     push(6, &s2);
  26.     push(4, &s2);
  27.     push(2, &s2);
  28.  
  29.     int x;
  30.  
  31.     print_stack(&s1);
  32.     print_stack(&s2);
  33.  
  34.     int sum1;
  35.     pop(&s1, &sum1);
  36.  
  37.     int sum2;
  38.     pop(&s2, &sum2);
  39.  
  40.     while (!stack_is_empty(&s1) || !stack_is_empty(&s2))
  41.     {
  42.         if (sum1 != sum2)
  43.         {
  44.             if (sum1 < sum2)
  45.             {
  46.                 pop(&s1, &x);
  47.                 sum1 += x;
  48.             }
  49.  
  50.             else if (sum1 > sum2)
  51.             {
  52.                 pop(&s2, &x);
  53.                 sum2 += x;
  54.             }
  55.         }
  56.  
  57.         else
  58.         {
  59.             printf("\n\nResult: %d", sum1);
  60.             break;
  61.         }
  62.     }
  63.  
  64.     if(stack_is_empty(&s1) && stack_is_empty(&s2) && sum1 != sum2)
  65.         printf("\nDidn't find!");
  66.    
  67. }
  68.  
  69. /* Pseudo-Code
  70.  
  71. create_stack(Q1)
  72. create_stack(Q2)
  73.  
  74. int sum_q1 =pop(Q1) , sum_q2=pop(Q2)
  75.  
  76. while isEmpty(Q1) = FALSE or isEmpty(Q2) = FALSE
  77. do:
  78.     if sum_q1 > sum_q2
  79.         sum_q2 += pop(Q2)
  80.     else if sum_q1 < sum_q2
  81.         sum_q1 += pop(Q1)
  82.     else
  83.         return 1          
  84.  
  85. end while
  86.  
  87. return 0
  88.  
  89. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement