Язык С++ и программирование на нем. Рейзлин В.И. - 147 стр.

UptoLike

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

149
~ stack () { delete s ;}
void reset (){ top = EMPTY; } // Сброс стека в состояние ПУСТ.
void push (ETYPE c ) { s [ ++ top ] = c ; } // Занесение в стек.
ETYPE pop () { return (s [ top – – ]); } // Извлечение из стека.
ETYPE top_show () const { return (s [top]); }
/* Возвращает элемент из стека, фактически не извлекая его. Мо-
дификатор const гарантирует, что эта функция не будет менять данные-
члены объектов типа stack */
int empty () const { return (top = = EMPTY); }
// Проверяет, пуст ли стек. Возвращает
// 1, если стек пуст, 0 если не пуст.
int full () const { return (top = = max_len – 1); }
// Проверяет, есть ли в стеке еще место.
};
// Конец файла stack0.cpp
Теперь в программе могут появиться такие операторы:
stack data (1000); // Создание стека длиной 1000.
stack d[5] // Конструктор по умолчанию создает
массив
// из 5 стеков по 100 элементов каждый.
stack w (“ABCD“, 4); // w.s[0] = ‘A. . . s[3] = ‘D’.
stack cop ( w); // cop – копия стека w.
В качестве примера рассмотрим задачу вывода строки в обратном
порядке.
# include <iostream.h>
# include stack.cpp“
void main (){
char str [ ] = Дядя Вася!;
stack s;
int i = 0;
cout << str <<‘\n;
while ( str [ i ] )
if ( !s.full ()) s.push (str [ i++]);
else {cout << “Стек заполнен! <<‘\n’; break;}
while (!s.empty ())cout<<s.pop(); // Печать в обратном порядке.
cout <<’\n’;
}