#include
using namespace std;
template
class Stack
{
private:
T *p;
int top, length;
public:
Stack(int = 0); // стандартный размер стека - 0
~Stack();
void push(T); // дополнение элементом
T pop(); // удаление и возврат элемента
void display(); // отображение стека
};
template
Stack::Stack(int size)
{
top = -1;
length = size;
if (size == 0) {
p = 0;
} else {
p = new T[length];
}
}
template
Stack::~Stack()
{
if (p != 0) {
delete [] p;
}
}
template
void Stack::push(T elem)
{
if (p == 0) {
cout << "Стек нулевого размера" << endl;<br> cout << "Введите размер стека: ";<br> cin >> length;
p = new T[length];
}
if ( top == (length - 1) ) {
cout << "\nНе могу дополнить стек элементом " << elem << ", стек полон" << endl;<br> return;
} else {
top++;
p[top] = elem;
}
}
template
T Stack::pop()
{
if ( (p == 0) || (top == -1) ) {
cout << "Стек пуст, не могу убрать элемент.";<br> return -1;
}
T ret = p[top];
top--;
return ret;
}
template
void Stack::display()
{
for (int i = 0; i <= top; i++) {<br> cout << p[i] << " ";<br> }
cout << endl;<br>}
int main()
{
/* создайте стек так:
Stack stack1;
Stack stack2;
где в угловых кавычках - тип, с которым работает стек.
как пользоваться - смотрите заголовок класса.
*/
return 0;
}