ВУЗ:
Составители:
Рубрика:
31
ли стек. Очевидно, при выполнении операций Pop и Top стек должен быть не-
пустым, что контролируется вызовом процедуры Assert.
Реализация АТД «Стек» на базе массива
Реализуем АТД «Стек» в виде модуля. Модули являются удобным языковым
средством для создания АТД, поскольку содержат секции интерфейса и реализа-
ции. Интерфейс стека поместим в интерфейсную секцию модуля, а реализацию –
в секцию реализации модуля.
Элементы стека будем хранить в целочисленном массиве, индексируемом от
нуля. Индекс верхнего элемента стека будем хранить в
переменной t. Если t=-1,
то это означает, что стек пуст. Поскольку стек реализован на базе массива фикси-
рованного размера, то при выполнении операции Push он может переполниться.
Эта особая ситуация контролируется при помощи вызова процедуры Assert.
Далее приводится текст модуля IntStack, реализующего стек целых чисел.
unit IntStack;
interface
procedure Push(i: integer);
function Pop: integer;
function
Top: integer;
function IsEmpty: boolean;
implementation
const sz=1000;
var
a: array [0..sz-1] of integer;
t: integer;
procedure Push(i: integer);
begin
Inc(t);
Assert(t<=sz);
a[t]:=i;
end;
function Pop: integer;
begin
Assert(not IsEmpty);
Result:=a[t];
Dec(t);
end;
function Top: integer;
begin
Assert(not IsEmpty);
Result:=a[t]
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »