Advertisement
cacodemon665

Лаба 13 Вариант 1

Mar 10th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include "pch.h"
  2. #include <time.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct StackNode
  8. {
  9.     int value;
  10.     StackNode* next;
  11. };
  12.  
  13. StackNode* Add(StackNode* node, int value)
  14. {
  15.     StackNode* new_node = new StackNode;
  16.     new_node->value = value;
  17.     new_node->next = node;
  18.  
  19.     return new_node;
  20. }
  21.  
  22. void Print(StackNode* node)
  23. {
  24.     if (!node)
  25.         return;
  26.  
  27.     cout << node->value << " ";
  28.  
  29.     Print(node->next);
  30. }
  31.  
  32. void DeleteAll(StackNode* node)
  33. {
  34.     if (!node)
  35.         return;
  36.  
  37.     DeleteAll(node->next);
  38.     delete node;
  39. }
  40.  
  41. int main()
  42. {
  43.     int stack_size;
  44.     StackNode* top = NULL;
  45.  
  46.     cout << "Number of elements: " << endl;
  47.     cin >> stack_size;
  48.  
  49.     for (int i = 0; i < stack_size; i++)
  50.     {
  51.         int temp;
  52.         cin >> temp;
  53.         top = Add(top, temp);
  54.     }
  55.  
  56.     cout << "Stack: ";
  57.  
  58.     Print(top);
  59.  
  60.     cout << endl;
  61.  
  62.     StackNode * first = NULL, * second = NULL, * current = top;
  63.  
  64.     while (current)
  65.     {
  66.         if (current->value > 0)
  67.         {
  68.             first = Add(first, current->value);
  69.         }
  70.         else if (current->value < 0)
  71.         {
  72.             second = Add(second, current->value);
  73.         }
  74.  
  75.         current = current->next;
  76.     }
  77.  
  78.     cout << "First stack:" << endl;
  79.     Print(first);
  80.     cout << endl << "Second stack:" << endl;
  81.     Print(second);
  82.  
  83.    
  84.     DeleteAll(top);
  85.     DeleteAll(first);
  86.     DeleteAll(second);
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement