Advertisement
daniele2013

Esercizi stack / code svolti

Jul 8th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.28 KB | None | 0 0
  1. void moltiplica3(Stack s1, Stack s2, int *err1, int *err2)
  2. {
  3.     int a, b;
  4.     if(!emptyStack(s1))
  5.     {
  6.         a = pop(s1,err1);
  7.         moltiplica3(s1,s2,err1,err2);
  8.         if(!emptyStack(s2))
  9.         {
  10.             b = a * pop(s2,err2);
  11.             moltiplica3(s1,s2,err1,err2);
  12.         }
  13.         push(s2,b,err2);
  14.         push(s1,a,err1);
  15.     }
  16. }
  17.  
  18. List algo(Queue c1, Queue c2, int *err1, int *err2)
  19. {
  20.     int a, b;
  21.     List top = (List)malloc(sizeof(struct TList));
  22.     top = NULL;
  23.     if(!emptyQueue(c1) && !emptyQueue(c2))
  24.     {
  25.         a = dequeue(c1,err1);
  26.         b = dequeue(c2,err2);
  27.         if(a%2)
  28.             top = addNodeHead(top,a,0);
  29.         if(!(b%2))
  30.             top = addNodeHead(top,b,0);
  31.         if(top)
  32.             top->next = algo(c1,c2,err1,err2);
  33.         else
  34.             top = algo(c1,c2,err1,err2);
  35.     }
  36.     return top;
  37. }
  38.  
  39. void moltiplica2(Queue q, int *err)
  40. {
  41.     int a, b, c, cont = 0;
  42.     if(!emptyQueue(q))
  43.     {
  44.         a = dequeue(q,err);
  45.         cont++;
  46.         if(!emptyQueue(q))
  47.         {
  48.             b = dequeue(q,err);
  49.             cont++;
  50.         }
  51.         if(!emptyQueue(q))
  52.         {
  53.             c = dequeue(q,err);
  54.             cont++;
  55.         }
  56.         moltiplica2(q,err);
  57.         if(cont == 3)
  58.             enqueue(q,a*b*c,err);
  59.         else if(cont == 2)
  60.         {
  61.             enqueue(q,b,err);
  62.             enqueue(q,a,err);
  63.         }
  64.         else if(cont == 1)
  65.             enqueue(q,a,err);
  66.     }
  67. }
  68.  
  69. void stackCompito(Stack s, int triple, int *err)
  70. {
  71.     int a, b, c;
  72.     int cont = 0;
  73.     if(!emptyStack(s))
  74.     {
  75.         a = pop(s,err);
  76.         cont++;
  77.         if(!emptyStack(s))
  78.         {
  79.             b = pop(s,err);
  80.             cont++;
  81.         }
  82.         if(!emptyStack(s))
  83.         {
  84.             c = pop(s,err);
  85.             cont++;
  86.         }
  87.         stackCompito(s,triple+1,err);
  88.         if(cont == 3)
  89.         {
  90.             if(triple%2)
  91.             {
  92.                 if(a < c)
  93.                 {
  94.                     push(s,a,err);
  95.                     push(s,c,err);
  96.                 }
  97.                 else
  98.                 {
  99.                     push(s,c,err);
  100.                     push(s,a,err);
  101.                 }
  102.             }
  103.             else
  104.             {
  105.                 if(a > c)
  106.                 {
  107.                     push(s,a,err);
  108.                     push(s,c,err);
  109.                 }
  110.                 else
  111.                 {
  112.                     push(s,c,err);
  113.                     push(s,a,err);
  114.                 }
  115.             }
  116.         }
  117.         else if(cont == 2)
  118.         {
  119.             if(triple%2)
  120.             {
  121.                 if(a < b)
  122.                 {
  123.                     push(s,a,err);
  124.                     push(s,b,err);
  125.                 }
  126.                 else
  127.                 {
  128.                     push(s,b,err);
  129.                     push(s,a,err);
  130.                 }
  131.             }
  132.             else
  133.             {
  134.                 if(a > b)
  135.                 {
  136.                     push(s,a,err);
  137.                     push(s,b,err);
  138.                 }
  139.                 else
  140.                 {
  141.                     push(s,b,err);
  142.                     push(s,a,err);
  143.                 }
  144.             }
  145.         }
  146.         else if(cont == 1)
  147.             push(s,a,err);
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement