ВУЗ:
Составители:
98
else smbtp=pop(opstk);
С учетом приведенных соглашений для функции precedence, а
также исправлений для строки 12 рассмотренный алгоритм может быть
использован для преобразования любой строки, записанной в инфиксной
форме, в постфиксную. Подытожим правила приоритетности скобок:
precedence("(",op) == FALSE для любой операции op
precedence(op,"(") == FALSE для любой операции op,
отличной от ")"
precedence(op,")") == TRUE для любой операции op, отличной
от "("
precedence(")",op) = "неопределенно" для
любой операции
op, (попытка сравнения двух указанных операций означает ошибку)
Проиллюстрируем этот алгоритм несколькими примерами:
Пример1:
А+В*С
Приводится содержимое symb, постфиксной строки и opstk после
просмотра каждого символа. Вершина opstk находится справа.
Строка symb Постфиксная строка opstk
1 A A
2 + A +
3 B AB +
4 * AB +*
5 C ABC +*
6 ABC* +
7 ABC*+
Строки 1, 3 и 5 соответствуют просмотру операнда таким образом, что
символ (symb) немедленно помещается в постфиксную строку. В строке 2
была обнаружена операция, а стек оказался пустым, поэтому операция
помещается в стек. В строке 4 приоритет нового символа (*) больше, чем
98 else smbtp=pop(opstk); С учетом приведенных соглашений для функции precedence, а также исправлений для строки 12 рассмотренный алгоритм может быть использован для преобразования любой строки, записанной в инфиксной форме, в постфиксную. Подытожим правила приоритетности скобок: precedence("(",op) == FALSE для любой операции op precedence(op,"(") == FALSE для любой операции op, отличной от ")" precedence(op,")") == TRUE для любой операции op, отличной от "(" precedence(")",op) = "неопределенно" для любой операции op, (попытка сравнения двух указанных операций означает ошибку) Проиллюстрируем этот алгоритм несколькими примерами: Пример1: А+В*С Приводится содержимое symb, постфиксной строки и opstk после просмотра каждого символа. Вершина opstk находится справа. Строка symb Постфиксная строка opstk 1 A A 2 + A + 3 B AB + 4 * AB +* 5 C ABC +* 6 ABC* + 7 ABC*+ Строки 1, 3 и 5 соответствуют просмотру операнда таким образом, что символ (symb) немедленно помещается в постфиксную строку. В строке 2 была обнаружена операция, а стек оказался пустым, поэтому операция помещается в стек. В строке 4 приоритет нового символа (*) больше, чем
Страницы
- « первая
- ‹ предыдущая
- …
- 96
- 97
- 98
- 99
- 100
- …
- следующая ›
- последняя »