Как в стеке найти элементы удовлетворяющие условиям и выписать их в выходную строку?
Реализую алгоритм сортировочной станции. Но не знаю, как реализовать следующую часть алгоритма: Если символ операция и стек не пуст, а приоритет символа вершины стека, меньше приоритета входного символа, то из стека в выходную строку выталкиваются все символы операций с меньшим или равным приоритету входного символа, после чего входной символ операции заносится в стек. Подскажите, как можно это реализовать?
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool is_number(char ch)
{
bool result = false;
if (ch >= '0' && ch <= '9')
result = true;
return result;
}
int prioritet(char ch)
{
int prioritet;
switch (ch)
{
case '*':
case '/':
return 4;
case '-':
case '+':
return 3;
case '(':
return 2;
case ')':
return 1;
}
return 0;
}
string Reverse_Polish_Natation(string input_string)
{
char ch;
string output_string;
stack<char> stek_operator;
stack<char> tmp_stek_operator;
for (int i = 0; i < input_string.size(); ++i)
{
ch = input_string[i];
if (is_number(ch) == true)
{
while (is_number(ch) == true)
{
output_string.push_back(ch);
i++;
ch = input_string[i];
}
output_string.push_back(' ');
}
if (ch == ' ')
{
while (input_string[i] == ' ')
i++;
i--;
}
if (prioritet(ch) == 4 && prioritet(ch) == 3 && prioritet(ch) == 2)
{
if (stek_operator.empty())
{
stek_operator.push(ch);
}
if (!stek_operator.empty() || prioritet(ch) < prioritet(stek_operator.top()))
{
stek_operator.push(ch);
}
if (!stek_operator.empty() || prioritet(stek_operator.top()) < prioritet(ch))
{
}
}
}
int main()
{
string input_string = "(2 + 3) * 4";
Reverse_Polish_Natation(input_string);
}