Quick actions

cmd+k|ctrl+k

Navigation

Languages

Линейный однонаправленный список

Snippet info

Language

Cpp

Visibility

public

Author

svobodatimur

Created

2021-04-08T16:43:03.988426Z

Updated

2021-04-08T17:49:12.197116Z

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