Nsinecode

Untitled

Oct 19th, 2025
600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. if (minimum_.Empty() && Size() != 0) {
  2.     Stack<T> right_reversed = right_.GetReversedStack();
  3.     right_.DeleteStack();
  4.  
  5.     minimum_ = left_.GetMinStackWithOther(right_reversed);
  6.   }
  7.  
  8.  
  9. Node* GetFirstNode() { return head_; }
  10. Stack<T> GetMinStackWithOther(Stack<T> other);
  11. Stack<T> GetReversedStack();
  12.  
  13. template <typename T>
  14. Stack<T> Stack<T>::GetMinStackWithOther(Stack<T> other) {
  15.   Stack<T> min_stack;
  16.  
  17.   Node* current_node = head_;
  18.   bool current_stack = true;
  19.  
  20.   while (current_stack || current_node != nullptr) {
  21.     if (min_stack.Empty() || current_node->value <= min_stack.GetHead().second) {
  22.       min_stack.Push(current_node->value);
  23.     }
  24.  
  25.     if (current_node->next_node == nullptr && current_stack) {
  26.       current_node->next_node = other.GetFirstNode();
  27.       current_stack = false;
  28.     }
  29.  
  30.     current_node = current_node->next_node;
  31.   }
  32.  
  33.   return min_stack;
  34. }
  35.  
  36. template <typename T>
  37. Stack<T> Stack<T>::GetReversedStack()
  38. {
  39.   Stack<T> reversed_stack;
  40.  
  41.   Node* current_node = head_;
  42.  
  43.   while (current_node != nullptr) {
  44.     reversed_stack.Push(current_node->value);
  45.   }
  46.  
  47.   return reversed_stack;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment