
- •Типы данных, определяемые пользователем Оператор typedef
- •Перечислимые типы
- •Перечислимые типы
- •Структуры
- •Структуры
- •Структуры
- •Структуры
- •Инициализация структур
- •Присваивание структур
- •Доступ к элементам структур
- •Указатели на структуры
- •Указатели на структуры
- •Структуры как параметры
- •Битовые поля
- •Объединения
- •Объединения
- •Связанные динамические данные
- •Связанные динамические данные
- •Организация взаимосвязей в связанных динамических данных
- •Организация взаимосвязей в связанных динамических данных
- •Работа с очередью
- •Работа с очередью
- •Работа с очередью
- •Работа с очередью
- •Добавление элемента в очередь
- •Добавление элемента в очередь
- •Добавление элемента в очередь
- •Удаление элемента из очереди
- •Удаление элемента из очереди
- •Удаление элемента из очереди
- •Пример создания очереди
- •Пример создания очереди
- •Пример создания очереди
- •Пример создания очереди
- •Работа со стеком
- •Работа со стеком
- •Работа со стеком
- •Добавление элемента в стек
- •Добавление элемента в стек
- •Добавление элемента в стек
- •Добавление элемента в стек
- •Удаление элемента стека
- •Удаление элемента стека
- •Удаление элемента стека
- •Пример создания стека

Указатели на структуры
Указатели на структуры определяются также как и указатели на
другие типы.
Student *ps;
Можно ввести указатель для типа struct, не имеющего имени
11

Указатели на структуры
При определении указатель на структуру может быть сразу же проинициализирован.
Student *ps=&mas[0];
Указатель на структуру обеспечивает доступ к ее элементам 2 способами:
1.(*указатель).имя_элемента 2. указатель->имя_элемента
cin>>(*ps).name; cin>>ps->title;
12

Структуры как параметры
Структуры могут передаваться в функции и служить возвращаемым значением.
13

Битовые поля
Битовые поля – это особый вид полей структуры. При описании битового поля указывается его длина в битах (целая положительная константа).
Битовые поля могут быть любого целого типа. Они используются для плотной упаковки данных. Например, с их помощью удобно реализовать флажки типа «да» / «нет».
Особенностью битовых полей является то, что нельзя получить их адрес. Размещение битовых полей в памяти зависит от компилятора и аппаратуры.
14

Объединения
Объединение (union)- это частный случай структуры. Все поля объединения располагаются по одному и тому же адресу. Длина объединения равна наибольшей из длин его полей. В каждый момент времени в такой переменной может храниться только одно значение. Объединения применяют для экономии памяти, если известно, что более одного поля не потребуется. Также объединение обеспечивает доступ к одному участку памяти с помощью переменных разного типа.
0 1
2
3
4
5
6
7
8
9
x- занимает 4 байта
s – занимает 10 байтов |
15 |
|

Объединения
16

Связанные динамические данные
Линейные списки - это данные динамической структуры, которые представляют собой совокупность линейно связанных однородных элементов и для которых разрешены следующие действия:
•добавление элемента в начало (голову) списка;
•добавление элемента в конец (хвост) списка;
•вставка элемента между двумя любыми другими элементами списка;
•удаление любого, как крайнего, так и среднего, элемента списка.
17

Связанные динамические данные
Кольцевые списки — это такие же данные, как и линейные списки, но имеющие дополнительную связь между последним и первым элементами списка.
Очередь — частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента в конец (хвост) очереди и удаление элемента из начала (головы) очереди.
Стек — частный случай линейного односвязного списка, для которого разрешено добавлять или удалять элементы только с одного конца списка, который называется вершиной (головой) стека.
Деревья — это динамические данные иерархической структуры произвольной конфигурации. Элементы дерева
называются вершинами (узлами). |
18 |

Организация взаимосвязей в связанных динамических данных
Для организации связей между элементами динамической структуры данных требуется, чтобы каждый элемент содержал кроме информационных значений как минимум один указатель. Схематично такую структуру данных можно показать следующим образом:
Info
next
Info |
|
|
|
|
Info |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
next |
|
|
|
|
|
next |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19

Организация взаимосвязей в связанных динамических данных
Соответствующие ей объявления будут иметь такой вид:
где тип INFO может быть произвольного типа.
20