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