В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
retul
retul
17.08.2020 07:28 •  Информатика

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

Показать ответ
Ответ:
Vladko1337lol
Vladko1337lol
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;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота