Вопрос задан 03.07.2023 в 10:55. Предмет Информатика. Спрашивает Kim Aruzhan.

С++ Динамические структуры Создайте функции и программу-тест, реализующие основные операции для

стэка. Узлы стэка содержат целочисленные значения.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Домке Дима.

Ответ:

#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;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Давайте создадим простую реализацию стека в 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; }

Это основная реализация стека и тестовая программа для демонстрации его работы. Пожалуйста, обратите внимание, что данная реализация не включает обработку всех возможных ошибок, таких как переполнение стека, и преднамеренно упрощена для целей объяснения. В реальном коде обязательно следует учесть все возможные ситуации и добавить обработку ошибок.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос