Slide 1

Slide 1 text

19 ноября 2021 [email protected] Федор Витальевич Бушмелев Структуры на указателях

Slide 2

Slide 2 text

2/25 2/25 Указатели и динамическая память Где-то в куче

Slide 3

Slide 3 text

3/25 3/25 Указатели и динамическая память Где-то в куче

Slide 4

Slide 4 text

4/25 4/25 Проблемы при работе с массивами Всё также где-то в куче Вопросы: 1) Как удалить элемент из массива? 2) Как добавить старый элемент в массив? 3) Какие проблемы это за собой несет? 4) Что с этим можно сделать?

Slide 5

Slide 5 text

5/25 5/25 Стандартная библиотека шаблонов (STL)

Slide 6

Slide 6 text

6/25 6/25 Контейнеры STL

Slide 7

Slide 7 text

7/25 7/25 Односвязный список

Slide 8

Slide 8 text

8/25 8/25 Добавление и удаление узлов списка

Slide 9

Slide 9 text

9/25 9/25 Вопрос 1 Сравните динамические массивы и списки, какие плюсы/минусы каждого Вы можете назвать?

Slide 10

Slide 10 text

10/25 10/25 Двусвязный список

Slide 11

Slide 11 text

11/25 11/25 Вопрос 2: выбирайте бойца Class VS Struct

Slide 12

Slide 12 text

12/25 12/25 Вопрос 2: выбирайте бойца Class VS Struct Особой разницы нет, только в спецификации видимости: class – всегда по умолчанию private, а struct – public.

Slide 13

Slide 13 text

13/25 13/25 Вспоминаем структуры

Slide 14

Slide 14 text

14/25 14/25 Поля и методы

Slide 15

Slide 15 text

15/25 15/25 Конструкторы 1/2

Slide 16

Slide 16 text

16/25 16/25 Конструкторы 2/2

Slide 17

Slide 17 text

17/25 17/25 Деструкторы У деструктора не может быть аргументов!

Slide 18

Slide 18 text

18/25 18/25 Реализация односвязного списка Что требуется реализовать: Структура узла списка: • Значение, которое будет задавать пользователь. • Указатель на следующий элемент (по умолчанию nullptr). • Конструктор. Структура списка: • Указатели на первый/последний узел. • Конструктор. • Функция проверки наличия узлов в списке. • Функция добавления элемента в конец списка. • Функция печати всего списка. • Функция поиска узла в списке по заданному значению. • Функция удаления первого/последнего узлов. • Функция удаления узла по заданному значению.

Slide 19

Slide 19 text

19/25 19/25 Узел списка

Slide 20

Slide 20 text

20/25 20/25 Структура списка

Slide 21

Slide 21 text

21/25 21/25 Проверка на пустоту, печать и поиск элемента

Slide 22

Slide 22 text

22/25 22/25 Добавление/удаление элементов

Slide 23

Slide 23 text

23/25 23/25 Удаление по значению

Slide 24

Slide 24 text

24/25 24/25 Практические задания (до 26.11.2021) 1. Самостоятельно реализуйте структуру и функционал односвязного списка. 2. Напишите функцию, которая позволяет изменить все элементы списка следующим образом: если значение data – четное, то разделить на 2 (2*х); если нечетное, то умножить на 3 и вычесть 1 (3*х-1). 3. Напишите функцию по изменению порядка элементов в односвязном списке на обратный. 4. Напишите функцию, которая проверяет, можно ли удалить из списка каких-нибудь два элемента так, чтобы новый список оказался упорядоченным. 5. Дополните функционал реализованного односвязного списка до стека. 6. Через стек реализуйте перевод (простого) вводимого математического выражения в ОПЗ (обратную польскую запись), выведите ОПЗ и вычислите значение выражения. 7. Дополните реализованную структуру односвязного списка до двусвязного. 8. Определение, является ли двусвязный список симметричным.

Slide 25

Slide 25 text

19 ноября 2021 [email protected] Федор Витальевич Бушмелев Структуры на указателях