#include class Node { public: Node(const int value, Node* next) : next_(next), value_(value) {} explicit Node(const int v) : Node(v, nullptr) {} const Node* next() const { return next_; } int value() const { return value_; } private: Node* next_; int value_; }; class List { public: void pushFront(int value) { if (!head_) { head_ = new Node(value); return; } head_ = new Node(value, head_); } const Node* findByValue(const int value) const { const auto* current = head_; while (current) { if (current->value() == value) { return current; } current = current->next(); } return nullptr; } private: Node* head_ = nullptr; }; int main() { List list; list.pushFront(4); list.pushFront(2); list.pushFront(7); list.pushFront(9); if (const auto* const node = list.findByValue(1)) { std::cout << node->value() << '\n'; } else { std::cout << "can't find node with value 1\n"; } if (const auto* const node = list.findByValue(7)) { std::cout << node->value() << '\n'; } else { std::cout << "can't find node with value 7\n"; } return 0; }