#include #include using namespace std; class Stack { public: Stack(); ~Stack(); int top() const; void push(const int v); void pop(); bool isEmpty() const; private: struct Node; struct Node { Node* pNext_; int data_; }; Node* pHead_ = nullptr; }; int main() { Stack a; cout << a.isEmpty() << endl; a.push(3); cout << a.isEmpty() << endl; a.pop(); cout << a.isEmpty() << endl; a.push(3); a.push(3); }; Stack::Stack() = default; Stack::~Stack() { while (!isEmpty()) { pop(); } } void Stack::push(const int v) { Node* pNew = new Node; pNew->pNext_ = pHead_; pNew->data_ = v; pHead_ = pNew; } bool Stack::isEmpty() const { return (nullptr == pHead_); } void Stack::pop() { if (!isEmpty()) { Node* pDeleted{ pHead_ }; pHead_ = pDeleted->pNext_; delete pDeleted; } }