#include <iostream>
using namespace std;
// Структура элемента (узла) списка
struct Node {
int data;
Node *next;
};
class List {
private:
Node *head, *tail;
public:
List() : head(nullptr), tail(nullptr) {}
void add(int num);
void print() const;
void erase();
};
// Добавить объект в конец списка
void List::add(int data) {
Node *newNode = new Node;
newNode->data = data;
newNode->next = nullptr;
if (head != nullptr) tail->next = newNode;
else head = newNode;
tail = newNode;
cout << "В конец списка добавлен объект со значением: " << newNode->data << endl;
}
// Показать данные всех объектов списка
void List::print() const {
if (head != nullptr) {
cout << "Список содержит следующие значения: ";
Node *current = head;
while (current != nullptr) {
cout << current->data << ' ';
current = current->next;
}
cout << endl;
}
}
// Удалить один объект из начала списка
void List::erase() {
cout << "Из начала списка удален объект со значением: " << head->data << endl;
if (head != tail) {
Node *next = head->next;
delete head;
head = next;
} else {
delete head;
head = tail = nullptr;
}
}
int main() {
List list;
list.add(5);
list.add(10);
list.print();
cout << endl;
list.erase();
list.print();
cout << endl;
list.add(15);
list.print();
cout << endl;
list.erase();
list.print();
cout << endl;
list.erase();
list.print();
cout << endl;
return 0;
}