C++. написать программу, которая должна выполнять следующие операции: создавать стек. операцию дополнения стека. операцию просмотра стека. операцию удаления элементов стека.

CaMo3BaH4uK CaMo3BaH4uK    1   29.08.2019 01:10    0

Ответы
khadeevaelena khadeevaelena  06.10.2020 01:43
#include <iostream>
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;
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика