Advertisement
cacodemon665

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

Oct 25th, 2018
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include "pch.h" //для версий вижлы старше последних версий 2017 здесь должно быть #include "stdafx.h"
  2. #include <time.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct StackNode
  8. {
  9.     int value, max, dst;
  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.     if (!node || value >= node->max)
  20.     {
  21.         new_node->max = value;
  22.         new_node->dst = 0;
  23.     }
  24.     else
  25.     {
  26.         new_node->max = node->max;
  27.         new_node->dst = node->dst + 1;
  28.     }
  29.  
  30.     return new_node;
  31. }
  32.  
  33. void Print(StackNode * node)
  34. {
  35.     if (!node)
  36.         return;
  37.  
  38.     cout << node->value << " ";
  39.  
  40.     Print(node->next);
  41. }
  42.  
  43. void DeleteAll(StackNode * node)
  44. {
  45.     if (!node)
  46.         return;
  47.  
  48.     DeleteAll(node->next);
  49.     delete node;
  50. }
  51.  
  52. int main()
  53. {
  54.     const int stack_size = 20;
  55.     StackNode * top = nullptr;
  56.  
  57.     srand(time(0));
  58.  
  59.     for (int i = 0; i < stack_size; i++)
  60.     {
  61.         top = Add(top, rand() % 101 - 50);
  62.     }
  63.  
  64.     cout << "Stack: ";
  65.  
  66.     Print(top);
  67.  
  68.     cout << endl;
  69.  
  70.     cout << "Max element: " << top->max << endl;
  71.     cout << "Distance: " << top->dst << endl;
  72.  
  73.     DeleteAll(top);
  74.  
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement