Информатика
Константин Кориков
Тема 10
Связный список
Агенда
Проблемы массивов
Односвязный список
Конструкторы
Умные указатели
Проблемы массивов
Вставка и удаление
Односвязный список
Односвязный список
#### Односвязный список ```cpp struct Node { int data; Node* next; }; int main() { auto* a = new Node{1, nullptr}; auto* b = new Node{2, nullptr}; a->next = b; delete b; delete a; return 0; } ```
#### Обход списка ```cpp void print(Node* p) { while (p != nullptr) { std::cout << p->data << std::endl; // действие при обходе p = p->next; } } ```
Демонстрация
Связный список
#### Вставка в начало ```cpp void push(Node** head, int data) { Node* new_node = new Node{data, nullptr}; new_node->next = *head; *head = new_node; } ```
#### Обёртка ```cpp struct List { void push(int data); void print(); private: Node* head = nullptr; }; ```
Конструкторы
Конструктор
копирования
Умные указатели
Умные указатели
В стандартной библиотеке
constantine.korikov@gmail.com