ВУЗ:
Составители:
Рубрика:
- 25 -
procedure push (var S: stack;x:elemtype);
{ положить x в стек S}
begin S.top:=S.top+1;
S.elems[S.top]:=x
end; {push}
procedure pop (var S: stack; var x:elemtype);
{ взять из стека S верхний элемент и присвоить его x}
begin x:=S.elems[S.top];
S.top:=S.top-1;
end; {pop}
Перед началом работы со стеком нужно сделать его пустым. Для этого опишем
процедуру init_stack(S):
procedure init_stack (var S: stack);
{ начальная установка стека }
begin S.top:=0;
end; {init_stack}
К пустому стеку нельзя применять операцию pop, а к полному стеку нельзя
применять операцию push. Опишем функции full_stack(S)и
empty_stack(S), проверяющие стек на переполнение и пустоту.
function full_stack(var S: stack):boolean;
{ возвращает истину, если стек полон, иначе – ложь}
begin
full_stack:=L.top=stacksize
end; {full_stack}
function empty_stack (var S: stack):boolean;
{ возвращает истину, если стек пуст, иначе – ложь}
begin
empty
_stack:=L.top=0
end; {empty_stack}
В некоторых алгоритмах, использующих стек, проверка на пустоту или
переполнение перед обращением к стеку не требуется, поскольку для них
доказано, что при корректных входных данных подобных ситуаций не
возникает.
1
Для отладки программ, построенных по таким алгоритмам, было бы
удобно, чтобы процедуры pop и push сами проверяли корректность операции
со стеком и в случае ошибки сообщали о ней. Пусть процедура error с одним
параметром – строкой – печатает эту строку и приводит к завершению
программы. Дадим соответствующие описания push и pop .
1
В задаче 9 раздела «Примеры задач с решениями» описан алгоритм, использующий стек, в
котором при корректных входных данных попытка взять элемент из пустого стека исключена.
См. также замечание в решении задачи 10 в том же разделе.
procedure push (var S: stack;x:elemtype); { положить x в стек S} begin S.top:=S.top+1; S.elems[S.top]:=x end; {push} procedure pop (var S: stack; var x:elemtype); { взять из стека S верхний элемент и присвоить его x} begin x:=S.elems[S.top]; S.top:=S.top-1; end; {pop} Перед началом работы со стеком нужно сделать его пустым. Для этого опишем процедуру init_stack(S): procedure init_stack (var S: stack); { начальная установка стека } begin S.top:=0; end; {init_stack} К пустому стеку нельзя применять операцию pop, а к полному стеку нельзя применять операцию push. Опишем функции full_stack(S)и empty_stack(S), проверяющие стек на переполнение и пустоту. function full_stack(var S: stack):boolean; { возвращает истину, если стек полон, иначе – ложь} begin full_stack:=L.top=stacksize end; {full_stack} function empty_stack (var S: stack):boolean; { возвращает истину, если стек пуст, иначе – ложь} begin empty_stack:=L.top=0 end; {empty_stack} В некоторых алгоритмах, использующих стек, проверка на пустоту или переполнение перед обращением к стеку не требуется, поскольку для них доказано, что при корректных входных данных подобных ситуаций не возникает.1 Для отладки программ, построенных по таким алгоритмам, было бы удобно, чтобы процедуры pop и push сами проверяли корректность операции со стеком и в случае ошибки сообщали о ней. Пусть процедура error с одним параметром – строкой – печатает эту строку и приводит к завершению программы. Дадим соответствующие описания push и pop . 1 В задаче 9 раздела «Примеры задач с решениями» описан алгоритм, использующий стек, в котором при корректных входных данных попытка взять элемент из пустого стека исключена. См. также замечание в решении задачи 10 в том же разделе. - 25 -
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »