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

UptoLike

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

33
Ниже приводится программа вычисления значения постфиксного выражения,
использующая АТД «Стек», подключаемый в виде модуля IntStack:
uses SysUtils,IntStack;
var
a: string;
i: integer;
begin
read(a);
for i:=1 to Length(a) do
case a[i] of
'0'..'9': Push(StrToInt(a[i]));
'+': Push(Pop+Pop);
'*': Push(Pop*Pop);
end;
Assert(IsEmpty);
writeln(Pop);
end.
Несомненное достоинство данной реализации стека состоит в том, что она
скрыта в модуле, и клиентская программа работает со стеком
только через его ин-
терфейс. Именно это обстоятельство позволяет нам поменять реализацию стека на
более эффективную, не изменяя клиентскую программу.
Избавимся от возможной ошибки переполнения стека. Для этого заменим
массив, использующийся для хранения элементов стека, односвязным списком.
Реализация АТД «Стек» на базе линейного списка
uses IntStack;
... // интерфейс остается тем же самым
implementation
type
PNode=^Node;
Node=record
data: integer;
next: PNode;
end;
var head: PNode; // указатель на вершину стека
function NewNode(data: integer; next: PNode): PNode;
begin
New(Result);
Result^.data:=data;
Result^.next:=next;
end;