С++ Динамические структуры Создайте функции и программу-тест, реализующие основные операции для
стэка. Узлы стэка содержат целочисленные значения.Ответы на вопрос
        Ответ:
#include<iostream>
#include<list>
using namespace std;
class Stack
{
public:
void push(int value)
{
stack_lst.push_front(value);
}
int top()
{
int value=stack_lst.front();
stack_lst.pop_front();
return value;
}
bool empty()
{
return stack_lst.empty();
}
private:
list<int> stack_lst;
};
int main()
{
Stack a;
for(int i=0;i<10;i++)
{
a.push(i);
}
while(!(a.empty()))
{
cout<<a.top()<<endl;
}
return 0;
}
Объяснение:
            Давайте создадим простую реализацию стека в C++, включающую основные операции: добавление элемента в вершину стека (push), удаление элемента из вершины стека (pop), проверку на пустоту стека (isEmpty), получение значения вершины стека без удаления (peek), и функцию для создания тестовой программы.
cpp#include <iostream>
class StackNode {
public:
    int data;
    StackNode* next;
    StackNode(int value) : data(value), next(nullptr) {}
};
class Stack {
private:
    StackNode* top;
public:
    Stack() : top(nullptr) {}
    void push(int value) {
        StackNode* newNode = new StackNode(value);
        newNode->next = top;
        top = newNode;
    }
    void pop() {
        if (isEmpty()) {
            std::cout << "Stack is empty. Cannot pop." << std::endl;
            return;
        }
        StackNode* temp = top;
        top = top->next;
        delete temp;
    }
    bool isEmpty() {
        return top == nullptr;
    }
    int peek() {
        if (isEmpty()) {
            std::cout << "Stack is empty. Cannot peek." << std::endl;
            return -1; // You can choose a different value or behavior for this case
        }
        return top->data;
    }
    ~Stack() {
        while (!isEmpty()) {
            pop();
        }
    }
};
int main() {
    Stack stack;
    stack.push(5);
    stack.push(10);
    stack.push(20);
    std::cout << "Top element: " << stack.peek() << std::endl;
    
    stack.pop();
    std::cout << "Top element after pop: " << stack.peek() << std::endl;
    stack.pop();
    stack.pop();
    if (stack.isEmpty()) {
        std::cout << "Stack is empty." << std::endl;
    } else {
        std::cout << "Stack is not empty." << std::endl;
    }
    return 0;
}
Это основная реализация стека и тестовая программа для демонстрации его работы. Пожалуйста, обратите внимание, что данная реализация не включает обработку всех возможных ошибок, таких как переполнение стека, и преднамеренно упрощена для целей объяснения. В реальном коде обязательно следует учесть все возможные ситуации и добавить обработку ошибок.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
- 
			
Математика
 - 
			
Литература
 - 
			
Алгебра
 - 
			
Русский язык
 - 
			
Геометрия
 - 
			
Английский язык
 - 
			
Химия
 - 
			
Физика
 - 
			
Биология
 - 
			
Другие предметы
 - 
			
История
 - 
			
Обществознание
 - 
			
Окружающий мир
 - 
			
География
 - 
			
Українська мова
 - 
			
Информатика
 - 
			
Українська література
 - 
			
Қазақ тiлi
 - 
			
Экономика
 - 
			
Музыка
 - 
			
Право
 - 
			
Беларуская мова
 - 
			
Французский язык
 - 
			
Немецкий язык
 - 
			
МХК
 - 
			
ОБЖ
 - 
			
Психология
 - 
			
Физкультура и спорт
 - 
			
Астрономия
 - 
			
Кыргыз тили
 - 
			
Оʻzbek tili
 
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			