ВУЗ:
Составители:
Рубрика:
77
{
int el = 0;
// Пока i-тая очередь не пуста, извлекаем из нее числа
// и печатаем их. Когда очередь станет пустой, попытка
// извлечь элемент, приведет к возникновению
// исключительной ситуации, произойдет выход из цикла
try
{
while (true)
Console.WriteLine("" +
(int)numbers[i].Dequeue() + "\t");
}
catch (Exception e)
{
Console.WriteLine();
}
}
}
Классической задачей, использующей стеки и очереди, является задача
построения постфиксной формы арифметического выражения и его
вычисления.
Пусть дана символьная строка, содержащая правильно записанное
арифметическое выражение. Требуется написать функцию перевода
выражения в постфиксную форму. Постфиксной формой выражения
называется такая запись, в которой знак операции следует за операндами.
При этом она не содержит скобок. Например, постфиксная форма выражение
a * b имеет вид ab *, a * b+c – вид ab * c +, a * (b + c) – вид abc + *.
Для решения задачи можно использовать следующий алгоритм.
Рассматриваются поочередно все символы строки. В стек записывается
открывающая скобка, и выражение далее анализируется посимвольно слева
направо. Если встречается операнд (число или переменная), то он сразу
помещается в очередь. Если встречается открывающая скобка, то она
заносится в стек, а если встречается закрывающая скобка, то из стека
извлекаются находящиеся там знаки операций до ближайшей открывающей
скобки, которая также удаляется из стека. Все эти знаки в порядке их
извлечения помещаются в очередь. Когда же встречается знак операции, то
из стека извлекаются знаки операций, приоритет которых больше или равен
приоритету данной операции, и они помещаются в очередь, после чего
рассматриваемый знак переносится в стек. Когда выражение заканчивается,
выполняются такие же действия, что и при встрече закрывающей скобки.
Постфиксная форма выражения определяется путем извлечения всех
операндов и операций из очереди, а потом из стека.
{
int el = 0;
// Пока i-тая очередь не пуста, извлекаем из нее числа
// и печатаем их. Когда очередь станет пустой, попытка
// извлечь элемент, приведет к возникновению
// исключительной ситуации, произойдет выход из цикла
try
{
while (true)
Console.WriteLine("" +
(int)numbers[i].Dequeue() + "\t");
}
catch (Exception e)
{
Console.WriteLine();
}
}
}
Классической задачей, использующей стеки и очереди, является задача
построения постфиксной формы арифметического выражения и его
вычисления.
Пусть дана символьная строка, содержащая правильно записанное
арифметическое выражение. Требуется написать функцию перевода
выражения в постфиксную форму. Постфиксной формой выражения
называется такая запись, в которой знак операции следует за операндами.
При этом она не содержит скобок. Например, постфиксная форма выражение
a * b имеет вид ab *, a * b+c – вид ab * c +, a * (b + c) – вид abc + *.
Для решения задачи можно использовать следующий алгоритм.
Рассматриваются поочередно все символы строки. В стек записывается
открывающая скобка, и выражение далее анализируется посимвольно слева
направо. Если встречается операнд (число или переменная), то он сразу
помещается в очередь. Если встречается открывающая скобка, то она
заносится в стек, а если встречается закрывающая скобка, то из стека
извлекаются находящиеся там знаки операций до ближайшей открывающей
скобки, которая также удаляется из стека. Все эти знаки в порядке их
извлечения помещаются в очередь. Когда же встречается знак операции, то
из стека извлекаются знаки операций, приоритет которых больше или равен
приоритету данной операции, и они помещаются в очередь, после чего
рассматриваемый знак переносится в стек. Когда выражение заканчивается,
выполняются такие же действия, что и при встрече закрывающей скобки.
Постфиксная форма выражения определяется путем извлечения всех
операндов и операций из очереди, а потом из стека.
77
Страницы
- « первая
- ‹ предыдущая
- …
- 76
- 77
- 78
- 79
- 80
- …
- следующая ›
- последняя »
