Advertisement
Val_Kir

2lab9

Jun 29th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.22 KB | None | 0 0
  1. /* Создать стек с целыми числами
  2.     и разбить его на два с четными
  3.     и нечетными числами, нулевые
  4.     числа удалить.
  5.     Неправильная версия. Вывод должен быть другим.
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11.  
  12. struct Node {int k; Node *next;};
  13.  
  14. Node *Push(Node *p,int k)
  15. {
  16.     Node *t=new Node;
  17.     t->k=k;
  18.     t->next=p;
  19.     return t;
  20. }
  21.  
  22. Node *Pop(Node *p)
  23. {
  24.     if(!p) return 0;
  25.     Node *t=p->next;
  26.     delete p;
  27.     return t;
  28. }
  29.  
  30. int Top(Node *p)
  31. {
  32.     if(p) return p->k;
  33.     puts("\n the stack is empty");
  34.     getchar();
  35.     exit(1);
  36. }
  37.  
  38. bool Empty(Node *p)
  39. {
  40.     if(p) return false;
  41.     return true;
  42. }
  43.  
  44. int main()
  45. {
  46.     int n=10, i, ja=0, jb=0, a[10], b[10], k=0;
  47.     Node *beg=NULL;
  48.     srand(time(0));
  49.  
  50.     for(i=0; i<n; ++i)
  51.     {
  52.         a[i]=rand()%10;
  53.         printf("%d ",a[i]);
  54.         beg=Push(beg,a[i]);
  55.     }
  56.  
  57.     for(i=0; !Empty(beg); i++)
  58.     {
  59.         k=Top(beg);
  60.         if(k==0) beg=Pop(beg);
  61.         else
  62.         {
  63.             if (k%2==0) {a[ja]=k; ja++;}
  64.             else {b[jb]=k; jb++;}
  65.             beg=Pop(beg);
  66.         }
  67.        
  68.     }
  69.  
  70.     puts("\n Conclusion: ");
  71.     for(i=0; i<ja; ++i) printf("%d ",a[i]);
  72.     putchar('\n');
  73.     for(i=0; i<jb; ++i) printf("%d ",b[i]);
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement