ВУЗ:
Составители:
Рубрика:
78
// определение функции перевода арифметического выражения
// в постфиксную форму
// str – строка, содержащая исходное арифметическое выражение
// функция возвращает строку
// с постфиксной формой этого выражения
static string Postfix(string str)
{
Stack<char> s = new Stack<char>();
Queue<char> q = new Queue<char>();
char c;
// строка анализируется посимвольно
for(int i=0;i<str.Length; i++)
{
switch(str[i])
{
// если текущий символ – знак операции
case '+': case '-': case '*': case '/':
if(s.Count == 0)
// если стек пустой, помещаем
// символ операции в стек
s.Push(str[i]);
else
{
bool f = true;
с = s.Pop();
if(str[i] == '+' || str[i] == '-')
{
// если текущая операция '+' или '-',
// из стека в очередь перемещаются все
// знаки операций либо до достижения
// пустоты стека, либо до достижения
// символа '('
while(c != '(')
{
q.Enqueue(c);
if(s.Count != 0)
c = s.Pop();
else
{
f = false; break;
}
}
}
else
{
// если текущая операция '*' или '/',
// из стека в очередь перемещаются все
// знаки операций либо до достижения
// пустоты стека, либо до достижения
// символов '(', '+' или '-'
// определение функции перевода арифметического выражения // в постфиксную форму // str – строка, содержащая исходное арифметическое выражение // функция возвращает строку // с постфиксной формой этого выражения static string Postfix(string str) { Stacks = new Stack (); Queue q = new Queue (); char c; // строка анализируется посимвольно for(int i=0;i
Страницы
- « первая
- ‹ предыдущая
- …
- 77
- 78
- 79
- 80
- 81
- …
- следующая ›
- последняя »