Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (minimum_.Empty() && Size() != 0) {
- Stack<T> right_reversed = right_.GetReversedStack();
- right_.DeleteStack();
- minimum_ = left_.GetMinStackWithOther(right_reversed);
- }
- Node* GetFirstNode() { return head_; }
- Stack<T> GetMinStackWithOther(Stack<T> other);
- Stack<T> GetReversedStack();
- template <typename T>
- Stack<T> Stack<T>::GetMinStackWithOther(Stack<T> other) {
- Stack<T> min_stack;
- Node* current_node = head_;
- bool current_stack = true;
- while (current_stack || current_node != nullptr) {
- if (min_stack.Empty() || current_node->value <= min_stack.GetHead().second) {
- min_stack.Push(current_node->value);
- }
- if (current_node->next_node == nullptr && current_stack) {
- current_node->next_node = other.GetFirstNode();
- current_stack = false;
- }
- current_node = current_node->next_node;
- }
- return min_stack;
- }
- template <typename T>
- Stack<T> Stack<T>::GetReversedStack()
- {
- Stack<T> reversed_stack;
- Node* current_node = head_;
- while (current_node != nullptr) {
- reversed_stack.Push(current_node->value);
- }
- return reversed_stack;
- }
Advertisement
Add Comment
Please, Sign In to add comment