Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 30 стр.

UptoLike

Составители: 

32
end;
function IsEmpty: boolean;
begin
Result := t=-1
end;
initialization
t:=-1;
end;
Отметим, что массив a, предназначенный для хранения элементов стека, и
переменная t описаны в секции реализации модуля, поэтому они не видны из
других модулей. Тем самым, обеспечивается принцип сокрытия реализации, по-
зволяющий работать с абстрактным типом данных только через его интерфейс.
Вычисление постфиксного выражения
Составим программу, вычисляющую значение выражения, записанного в
постфиксной нотации. Для простоты договоримся, что в выражении могут при-
сутствовать только знаки операций «+» и «*», целые однозначные числа и, воз-
можно, пробелы. Например:
5 9 8 + 4 6 * * 7 + *
Пусть выражение хранится в строке. Для его вычисления воспользуемся стеком целых
чисел. Если встречено число, то кладем его на стек, если же знак операции, то снимаем
со стека два последних числа, производим над ними указанную операцию и кладем ре-
зультат на стек. Например, обработка операции сложения имеет вид:
Push(Pop+Pop).
Проследим работу алгоритма для строки, приведенной выше. С этой целью
выведем содержимое стека до и после обработки знака операции:
5 9 8 +
5 17
5 17 4 6 *
5 17 24
5 17 24 *
5 408
5 408 7 +
5 415
5 415 *
2075
(результат)
Заметим, что при обработке знака операции в стеке должно быть как мини-
мум два элемента, а после обработки знака операции количество элементов в сте-
ке уменьшается на 1. После обработки всей строки результат лежит на вершине
стека. Если после его снятия стек не пуст, значит, исходное выражение в пост-
фиксной нотации
являлось ошибочным.